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.