есть приложение которое работает примерно в таком цикле
while(1) {
pipe my $r, my $w;
if (my $pid = fork) {
close $w;
while(<$r>) {
...
}
close $r;
waitpid($pid, 0);
next;
}
close $r;
open STDOUT, '>&', $w;
open STDERR, '>&', $w;
close $w;
# тут exec на дочернее приложение
}
каждый раз когда дочка перезапускается видим сообщение в логе.
периодически нахожу это приложение в следующем состоянии:
запущено 2 или даже 3 дочерних приложения.
то есть получается из while(<>) оно вышло и waitpid отработало, но
дочка осталась жива и продолжает себе работать.
я тут поштудировал perldoc на waitpid и на readline но не могу понять
в чем проблема может быть?
PS: задача приложения - держать счетчики по выводимому логу и
рестартить дочку если та по какой-то причине мрет.
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org