Что делает wait () в Unix?

Я читал о wait() функция в книге систем Unix. Книга содержит программу, которая имеет wait(NULL) в нем. Я не понимаю, что это значит. В другой программе было

while(wait(NULL)>0) 

...что также заставило меня почесать голову.

может ли кто-нибудь объяснить, что делает функция выше?

3 ответов


человек подождите, (2)

все эти системные вызовы используются для ожидания изменения состояния в дочерний процесс вызывающего процесса, и получить информацию о ребенке чье состояние изменилось. Изменение состояния считается следующим: ребенок был прерван; ребенок был остановлен сигналом; или ребенок был возобновлен сигналом

так wait() позволяет процессу ждать, пока один из его дочерних процессов не изменит свое состояние, существует для образец. Если waitpid() вызывается с идентификатором процесса, он ждет, что конкретные дочерний процесс для изменения его состояния, если pid не указано, то это эквивалентно вызову wait() и он ждет любой дочерний процесс для изменения его состояния.

на wait() функция возвращает дочерний pid при успехе, поэтому, когда он вызывается в цикле, как это:

while(wait(NULL)>0) 

это означает ждать, пока все дочерние процессы не выйдут (или не изменят состояние) , и больше не ребенок процессы unwaited-Для (или до возникновения ошибки)


быстрый google предлагает,wait(NULL) ожидает завершения любого из дочерних процессов


wait(NULL) Что должно быть эквивалентно waitpid(-1, NULL, 0)

wait(NULL) ожидает завершения всех дочерних процессов