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... Если надо код напишу. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.