URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1988
[ Назад ]

Исходное сообщение
"Как в родителе дождаться окончания всех потомков???"

Отправлено Bizon , 14-Авг-03 17:20 
Как в родителе дождаться окончания всех потомков???
какой wait для этого использовать???

Содержание

Сообщения в этом обсуждении
"Как в родителе дождаться окончания всех потомков???"
Отправлено XMan , 14-Авг-03 19:12 
while (wait(-1,0,0) != -1);

?

Можно еще вот так:

do{ while (wait(-1,0,0) != -1); } while (errno == EINTR);

Это чтобы перехватывать всякие сигналы.

"man wait"


"Как в родителе дождаться окончания всех потомков???"
Отправлено Bizon , 15-Авг-03 15:32 
>while (wait(-1,0,0) != -1);
>
>?
>
>Можно еще вот так:
>
>do{ while (wait(-1,0,0) != -1); } while (errno == EINTR);
>
>Это чтобы перехватывать всякие сигналы.
>
>"man wait"

Спасибо большое!!очень помогло!!
теперь усложним задачу:))))))
как ждать завершения ВСЕХ потомков определённое время??



"Как в родителе дождаться окончания всех потомков???"
Отправлено XMan , 15-Авг-03 16:24 
Чего-то я в прошлый раз намудрил - у wait всего один парамерт. Это у waitpid их три :)

Ты ман читал ? Там же по-английски/русски написано:

"Функция wait приостанавливает выполнение текущего процесса до тех пор, пока дочерний процесс не завершится, или до появления сигнала, который либо завершает текущий процесс, либо требует вызвать функцию-обработчик."

А теперь смотри в сторону сигнала SIGALRM м его обработчика, устанавливаемого с помощью "signal(...,...)". А чтобы всё это работало - "man alarm" и впихиваешь его прямо в обработчик сигнала SIGALRM.

Теоретически так :)