Linux 3.0: Ejecutar proceso hijo con stdin / stdout canalizado
En Linux 3.0 / C ++:
Me gustaría una función que haga lo siguiente:
string f(string s)
{
string r = system("foo < s");
return r;
}
Obviamente, lo anterior no funciona, pero se entiende la idea. Tengo una cadena s que me gustaría pasar como entrada estándar de la ejecución de un proceso secundario de la aplicación "foo", y luego me gustaría registrar su salida estándar en la cadena r y luego devolverla.
¿Qué combinación de syscalls de linux o funciones posix debo usar?