in reply to Killing of ALL children made by Open3

The kill builtin will accept a negative pid as argument and signal the entire process group. That may not be portable to win32, but you can try it. Even if the negative argument trick doesn't work, you can give kill a list of pid's to signal,

kill 'INT', keys %process; delete $process{wait()} while %process;

After Compline,
Zaxo

Replies are listed 'Best First'.
Re: Re: Killing of ALL children made by Open3
by Anonymous Monk on Nov 12, 2003 at 19:41 UTC
    Hello Zaxo, thanks for the reply. I tried the negative pid idea, but that does not appear to be implemented in Windows. I have been looking into ActiveStates pseudo-fork(), which claims a kill of the parent process will clean up all child processes, but fork is a whole new can of worms I would rather avoid by using Open3. I would be happy to use your code snippet, but I am not able to retrieve the pids that are spawned inside the CMD.exe which is spawned from Open3. Know any tricks for that? A real ugly way would be taking PS snapshots and seeing what pids were created in the meantime, but you could end up killing things you down want to. Thanks, Steve