Что делает wait () в Unix?
Я читал о wait() функция в книге систем Unix. Книга содержит программу, которая имеет wait(NULL) в нем. Я не понимаю, что это значит. В другой программе было
while(wait(NULL)>0)
...что также заставило меня почесать голову.
может ли кто-нибудь объяснить, что делает функция выше?
3 ответов
человек подождите, (2)
все эти системные вызовы используются для ожидания изменения состояния в дочерний процесс вызывающего процесса, и получить информацию о ребенке чье состояние изменилось. Изменение состояния считается следующим: ребенок был прерван; ребенок был остановлен сигналом; или ребенок был возобновлен сигналом
так wait() позволяет процессу ждать, пока один из его дочерних процессов не изменит свое состояние, существует для образец. Если waitpid() вызывается с идентификатором процесса, он ждет, что конкретные дочерний процесс для изменения его состояния, если pid не указано, то это эквивалентно вызову wait() и он ждет любой дочерний процесс для изменения его состояния.
на wait() функция возвращает дочерний pid при успехе, поэтому, когда он вызывается в цикле, как это:
while(wait(NULL)>0)
это означает ждать, пока все дочерние процессы не выйдут (или не изменят состояние) , и больше не ребенок процессы unwaited-Для (или до возникновения ошибки)
wait(NULL) Что должно быть эквивалентно waitpid(-1, NULL, 0)
wait(NULL) ожидает завершения всех дочерних процессов