En caso de Windows, podrías crear un proceso y redireccionar los flujos para captarlos con tu programa. Luego, los envías si quieres por sockets, o lo que quisieras.
Creating a Child Process with Redirected Input and OutputEn caso de Linux, ahí ya no sé. En el peor de los casos, puedes hacer un system redirigiendo la salida a un archivo con ">archivo" en el comando. Luego, leer el archivo. Sería lo más terco, pero funcional.
Si te quieres centrar en el envío por socket, puedes separar fácilmente el programa principal de la captación de la salida del comando, y ya en un futuro, hacerlo como mejor te convenga.