Что убивает родительский процесс? - PullRequest
0 голосов
/ 28 мая 2019

Чем заканчивается родительский процесс в этом коде? Я вижу, не вижу его выхода где-либо ... Мой друг говорит, что родитель не закончен / не уничтожен, код просто останавливается при последнем выходе (0). Если это так, то что выводит родительский процесс из сна? Заранее спасибо

adghtesd

Результаты программы:

    parent: I'm the parent
    child: I'm the child
    child: I'm exiting
    parent: child process (PID=1919) exited with value 123
    parent: exiting
    test

1 Ответ

1 голос
/ 28 мая 2019

С эта ссылка POSIX на sleep:

Если sleep() возвращается по истечении запрошенного времени, возвращаемое значение должно быть 0. Если sleep()Возвращает из-за доставки сигнала, возвращаемое значение должно быть «неиспользованное» количество (запрошенное время минус время фактически спало) в секундах.

Что для вас происходит, когда родительский процессполучает сигнал SIGCHLD, вызывает прерывание функции sleep, а родитель продолжает работу после вызова sleep.

Если вы хотите спать в полном объеме, вам нужно проверить, что sleep возвращает и вызывает sleep в цикле, пока не вернется 0.

...