У меня действительно простой код, в котором я разветвляюсь один раз, а дочерний узел мутирует с помощью execlp, а родительский продолжает выполнять свою работу. Ничего особенного.
Я хочу перенаправить весь стандартный ввод в поток execlp-ed, а не в родительский.
Итак, если я выполню
echo "hi" | ./parent.o
это может быть записано с помощью string s; cin >> s;
в some_command.cpp
(но не в родительском. cpp!).
Текущая ситуация (parent. cpp):
int main()
{
int pid = fork();
if (pid < 0) {
std::cout << "Something crashed" << std::endl;
exit(-1);
} else if (pid == 0) {
// We are the forked child
execlp("/some/command", "some_command", NULL);
std::cout << "Execlp failed" << std::endl;
exit(127);
}
// We are the parent, and we keep running
// More stuff...
}
Прямо сейчас some_command. cpp содержит только пустой int main() { }
.
Спасибо.