Proper way to kill child processes

Bob Swerdlow rswerdlow at
Tue Jun 15 22:35:03 CEST 2004

My application starts up a number of processes for various purposes using:
    self.popen = popen2.Popen3("/usr/local/bin/python -O "")
and then shuts them down when appropriate with
    os.kill(, signal.SIGTERM)
Everything works fine on MacOSX.  However, I'm doing a port to Solaris (so I
can run it on my web site) and find that the child processes are not
stopping!  Solaris is creating TWO new processes: one for the SHELL and then
another started by the shell to run my Python script.  The os.kill() is
killing the shell process, not the one running my Python code.

Actually, I really want to kill both of these processes, but I only have the
pid for the shell process.  I cannot kill the whole process group because
that kills the main process, too (I tried it).

So, what is the best way to kill both the shell process (whose pid is
available from the Popen3 object) and its child process that is running my
Python script?  It looks like the python script process id is always one
greater than the shell process id of the shell process,  but I'm sure I
cannot rely on that.


Bob Swerdlow
rswerdlow at

Fight Spam!
Add this link to your signature (as I did):
Click through to find out more.

More information about the Python-list mailing list