Linux 3.0: Executando processo filho com stdin / stdout @ canaliza

o Linux 3.0 / C ++:

Gostaria de uma função que faça o seguinte:

string f(string s)
{
    string r = system("foo < s");
    return r;
}

Obviamente o acima não funciona, mas você entendeu. Eu tenho uma string s que gostaria de passar como entrada padrão de uma execução de processo filho do aplicativo "foo" e, em seguida, gostaria de gravar sua saída padrão na string r e depois retorná-la.

Que combinação de syscalls do linux ou funções posix devo usa

questionAnswers(6)

yourAnswerToTheQuestion