Перейти к содержанию

fork() и wait()


Рекомендуемые сообщения

Кусок программы:

for (i=0;i<3;i++)

if (fork() == 0)

execvp("./son",NULL);

else

wait(st);

Родительская программа запускает 3 процесса Son и вроде как должна дождаться пока они все не закончат свою работу.

Почему родительская программа не ждет окончания выполнения дочерних? Confused

Ссылка на комментарий
Поделиться на другие сайты

Цитата:

ОПИСАНИЕ

В результате выполнения системного вызова wait процесс приостанавливается до тех пор, пока один из непосредственно порожденных им процессов не завершится

Ссылка на комментарий
Поделиться на другие сайты

Почему не ждет? Ждет.

son.c:

int main()

{

sleep (3);

return 0;

}

main.c

int main ()

{

int i;

for (i=0;i<3;i++) {

system ("date");

if (fork() == 0)

execvp("./son", 0);

else

wait(0);

}

return 0;

}

es@tbw ~ % gcc son.c -o son

es@tbw ~ % gcc main.c -o main

es@tbw ~ % ./main

Пнд Фев 19 21:34:07 EET 2007

Пнд Фев 19 21:34:10 EET 2007

Пнд Фев 19 21:34:13 EET 2007

А это так задумано, чтоб процессы запускались по очереди, новый только после завершения предыдущего?

Ссылка на комментарий
Поделиться на другие сайты

Эээээ... ну спасибо за помощь! А то я думал, что "дедушка" должен умирать последним! А еще вопрос, может ли время выполнения процесса быть равным нулю??? У меня в программе все "родители" выводят нули, а последнее поколение процессов выводит время своей работы. Реализовано при помощи стандартной структуры tms... Если надо код напишу.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...