- Родительский процесс может читать со стандартного ввода только тогда, когда дочерний процесс пытается прочитать со стандартного ввода.
Следующий код не будет работать:поскольку родительский элемент не завершается, когда дочерний элемент завершает работу без чтения со стандартного ввода.Код: Выделить всё
int pipe[2]; // ... char buf[1024]; int n; while ((n = fread(stdin, buf, sizeof(buf)) != -1) write(pipe[1], buf, n); - Когда родительский элемент читает EOF из стандартного ввода, он также пересылает EOF дочернему элементу.
Итак, как записать EOF в стандартный ввод дочернего элемента?
Код: Выделить всё
auto pid = fork();
if (pid == -1) {
std::cerr
Подробнее здесь: [url]https://stackoverflow.com/questions/78519406/in-linux-posix-how-to-forward-stdin-to-forked-child-process-while-inspect-the[/url]