From: Jos Backus Date: 2009-03-25T14:17:07+09:00 Subject: Re: Looking for a method to kill all children for my Timeout::Error contingency On Wed, Mar 25, 2009 at 09:56:53AM +0900, Mike B wrote: > On Mar 24, 12:23 pm, Xeno Campanoli wrote: > > Jos Backus wrote: > > > On Wed, Mar 25, 2009 at 04:57:03AM +0900, Xeno Campanoli wrote: > > >> Do I really need to collect all the pids from fork to kill them in that case, or > > >> is there a method I'm not finding in pickaxe that just does it??? > > > > > Here's a trick I use, maybe it is useful. Note that even if push-to-slaves > > > creates children, those too will be killed because they reside in the same > > > process group. > > > > The problem with that is I have many processes, so I would be doing this with > > arrays and loops, which suddenly becomes problematic. If I could just call > > something that automatically kills the entire tree of children on down that > > would be much nicer...?? If those many processes were being started by the push-to-slaves script as in the example I posted, unless that script did something to create new process groups for its children, the code I posted would terminate all those processes because they all belong to the same process group which is targeted by the Process.kill(-TERM, pid) invocation. Iow, if you want to kill all the children at once the easiest way is to make sure they all belong to the same pgrp. -- Jos Backus jos at catnook.com