подключение fork () и wait () к pid - PullRequest
0 голосов
/ 20 июня 2011

Я знаю, что fork () создает дочерний процесс, возвращает 0 дочернему процессу и возвращает pid дочернего процесса родительскому процессу.

Из того, что я понимаю, wait () также возвращает некоторый pid дочернего процесса, который завершен.Это тот же pid, что и тот, который возвращается в parent после fork?

Я не понимаю, как использовать wait ().

Мой учебник просто показывает

int ReturnCode;
while (pid!=wait(&ReturnCode));
/*the child has terminated with Returncode as its return code*/

Я даже не понимаю, что это значит.

Как использовать wait ()?Я использую execv для создания дочернего процесса, но я хочу, чтобы родитель подождал.Кто-то, пожалуйста, объясните и приведите пример.

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 июня 2011

wait () принимает адрес целого числа переменная и возвращает идентификатор процесса завершенный процесс.

Подробнее о wait () системный вызов

while (pid!=wait(&ReturnCode));
Цикл

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

0 голосов
/ 20 июня 2011

wait() действительно возвращает PID дочернего процесса, который умер. Если у вас есть только один дочерний процесс, вам на самом деле не нужно проверять PID (хотя убедитесь, что он не нулевой или отрицательный; существуют некоторые условия, которые могут вызвать сбой ожидания вызова). Вы можете найти пример здесь: http://www.csl.mtu.edu/cs4411/www/NOTES/process/fork/wait.html

...