in reply to Re: Re: Update: Killing a process and, recursively, all its children
in thread Killing a process and, recursively, all its children

Hi, I needed to kill the child processes recursively and went through all the suggestions on this thread and the related. Thanks for everybody's input. While killfam is great, i wanted to see if there was a non module way of doing this(in our environment, i am discouraged to install modules unless its absolutely needed). So i have done it using setpgrp. I just want to share that here. Below is a sample:
#!/usr/bin/perl -w use strict; use POSIX "WNOHANG"; setpgrp(0, 0); if(my $pid = fork) { #parent print "RESULT: $pid\n"; my $kid; my $count; do { $kid = waitpid(-1, WNOHANG); sleep 1; $count++; if ($count > 15) { print "I have waited too long. self destructin +g\n"; my $GID = getpgrp($pid); `kill -9 -$GID`; } } until $kid == $pid; } else { #child local $SIG{CHLD} = sub { wait() }; system("sleep 100"); exit; } print "I am all done\n";
  • Comment on Re^3: Update: Killing a process and, recursively, all its children
  • Download Code