У меня есть следующий исходный код:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
int p, i;
p=fork();
if (p == -1) {perror("fork() error "); exit(EXIT_FAILURE);}
if (p == 0) {
for (i = 0; i < 10; i++)
printf("Child: i=%d pid=%d, ppid=%d\n", i, getpid(), getppid());
exit(0);
} else {
for (i = 0; i < 10; i++)
printf("Parent: i=%d pid=%d ppid=%d\n", i, getpid(), getppid());
wait(0);
}
}
Если родительский процесс решит не ждать дочернего процесса (удалите строку, содержащую инструкцию wait (0)), на терминале будет напечатана толькоэти строки в дочернем процессе.Если я решу перенаправить вывод программы в произвольный файл (это будет: ./source_code> some_file), файл some_file будет содержать строки из родительского процесса и дочернего процесса, а не только из дочернего процесса, как описано выше.Как это возможно?