in reply to Re: Killing Forks
in thread Killing Forks
#!/etrade/bin/perl for ($i=0; $i<=10; $i++) { wait_for_a_kid() if keys %pid_to_node > 3; $pid = fork; if ($pid) { ## parent does... $pid_to_node{$pid} = $i; } else { print "$i $$\n"; local $SIG {ALRM} = sub { print "\tKilled PID $$\n"; kill 15, $$ or die "kill: $!"}; # Just SIGTERM alarm 6; eval { ## child does... exit !&Test; waitpid $pid => 0; }; } } ## final reap: 1 while wait_for_a_kid(); sub wait_for_a_kid { my $pid = wait; return 0 if $pid < 0; delete $pid_to_node{$pid} or warn("Why did I see $pid ($?)\n") +, next; } sub Test { sleep 5; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Killing Forks
by jbert (Priest) on Aug 14, 2007 at 13:34 UTC | |
by Earindil (Beadle) on Aug 14, 2007 at 13:41 UTC | |
by Earindil (Beadle) on Aug 14, 2007 at 14:14 UTC | |
by jbert (Priest) on Aug 14, 2007 at 16:15 UTC | |
by cdarke (Prior) on Aug 14, 2007 at 16:18 UTC |