|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Ivan 2:5020/400 20 Apr 2004 18:51:52 To : All Subject : fork в Perl --------------------------------------------------------------------------------
Задача такая нужно с помощью Перл скрипта запускать в память например 10 детей с
помощью форк так чтобы каждый ребенок занимался своими делами, а в это время
родительский срипт должен следить за тем чтобы их в памяти оставалось 10 - т е
если один из 10 закончил работу - запускать еще одноко
Вопрос такой :
как следить за тем сколько детей сидит в памяти ?
Почему то когда я пишу скрипт типа:
for $i (1..10) {
p[$i]=fork();
if ($pid[$i] > 0 ) {
PARENT
} else {
CHILD
exit(0);
}
}
for $i (1..10) {
if (getpgrp(p[$i]) == - 1 ) {
Запускать еще одного ребенка ...
}
}
Вот так не работает т е обнаруживается что дети не уничтожаются а висят до конца
выполнения родительского скрипта
Почему ?
Еще один вопрос - как отследить по пиду процесса есть ли он еще в памяти -
getpgrp - оно конечно может являться признаком но некрасиво ...
Можно конечно использовать $SIG{CHLD} - но не
пойму как в этом случае оно должно
работать ...
--- ifmail v.2.15dev5.3
* Origin: "MTU-Intel ISP" (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/3655f6e50790.html, оценка из 5, голосов 10
|