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

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

Опубликовано

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

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

if (fork() == 0)

execvp("./son",NULL);

else

wait(st);

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

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

Опубликовано

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

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 эмодзи.

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

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

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

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