В этом случае я написал простую прогу:
int main()
{
pid_t chpid;
chpid=fork();
if(chpid==0) // child
{
sleep(2);
execlp("/usr/bin/man","/usr/bin/man","ps",NULL);
printf("still alive\n");
}
else
{
printf("parent goes down\n");
}
return 0;
}
Во время работы родительского штампа через 2 секунды я получаю: /usr/bin/man: command exited with status 1: pager -s
Почему это так? определенно, проблема в смерти родителя, если я добавлю while (1) в родительский код, то все в порядке.
Я написал тест-прогу, которая записывает некоторую строку в стандартный вывод каждый период времени. Оно работает. Кажется странным.