Приветствую.
Мне необходимо запустить стороннюю консольную программу, которая читает пользовательский ввод через std::cin, после чего отдает результат, который необходимо спарсить. Я так понимаю, что в *nix это осуществляется через pipes. Расскажите, пожалуйста, как это вообще возможно реализовать?
int fd[2];
pipe(fd);
pid_t pid_fork = fork();
if(!pid_fork)
{
// Дочерний процесс
}
else
{
// Родительский процесс
}
При инициализации пайпа мы имеем 2 выхода трубы - ввод и вывод. При вводе в правый конец трубы (1), вывод мы можем получить на левом (0). Я пытался запустить программу через execl в дочернем процессе, но, дальше у меня вообще нет идей, как мне передать на вход программы пользовательский ввод (понятно, что через write), а потом где и как получить вывод программы.
execl("/bin/sh", "sh", "-c", "../sample/main", NULL);