mp3moto Опубликовано 19 февраля, 2007 Жалоба Поделиться Опубликовано 19 февраля, 2007 Кусок программы: for (i=0;i<3;i++) if (fork() == 0) execvp("./son",NULL); else wait(st); Родительская программа запускает 3 процесса Son и вроде как должна дождаться пока они все не закончат свою работу. Почему родительская программа не ждет окончания выполнения дочерних? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AccessD Опубликовано 19 февраля, 2007 Жалоба Поделиться Опубликовано 19 февраля, 2007 Цитата: ОПИСАНИЕ В результате выполнения системного вызова wait процесс приостанавливается до тех пор, пока один из непосредственно порожденных им процессов не завершится Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ineu Опубликовано 19 февраля, 2007 Жалоба Поделиться Опубликовано 19 февраля, 2007 Почему не ждет? Ждет. 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 А это так задумано, чтоб процессы запускались по очереди, новый только после завершения предыдущего? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mp3moto Опубликовано 20 февраля, 2007 Автор Жалоба Поделиться Опубликовано 20 февраля, 2007 Эээээ... ну спасибо за помощь! А то я думал, что "дедушка" должен умирать последним! А еще вопрос, может ли время выполнения процесса быть равным нулю??? У меня в программе все "родители" выводят нули, а последнее поколение процессов выводит время своей работы. Реализовано при помощи стандартной структуры tms... Если надо код напишу. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.