Программа печатает только строки из процесса зомби - PullRequest
0 голосов
/ 26 июня 2018

У меня есть следующий исходный код:

#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 будет содержать строки из родительского процесса и дочернего процесса, а не только из дочернего процесса, как описано выше.Как это возможно?

...