c ++: salida de subproceso a stdin

Suponga que quiero llamar a un subproceso desde mi programa y quiero leer la salida de ese subproceso en mi programa.

Aquí hay una manera trivial de hacer eso:

//somefile.cpp
system("sub_process arg1 arg2 -o file.out");
           //call the subprocess and have it write to file
FILE *f = std::fopen("file.out", "r");
//.... and so on

Todos sabemos que las operaciones de E / S son computacionalmente lentas. Para acelerar esto, me gustaría omitir el paso escribir-a-archivo-luego-leer-de-archivo, y en su lugar redirigir la salida de este subprocesodirectamente en stdin (o alguna otra transmisión)

¿Cómo haría esto? ¿Cómo me salto la operación de E / S?

Nota: muchos programas escupen algunas cosas de diagnóstico en stdout mientras se ejecutan, y escriben una versión limpia de la salida en stdout (ej: stdout: "paso1 ... hecho, paso2 ... hecho, paso3..hacido" - o file-out: "El número mágico es: 47.28"), por lo que ignorar el argumento "-o" y confiar en que la salida se redirigirá automáticamente a stdout no es necesariamente útil ...

Gracias a todos de antemano.

Respuestas a la pregunta(6)

Su respuesta a la pregunta