Что делает 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)
ожидает завершения всех дочерних процессов