Proper way to kill child processes
Jean Brouwers
mrjean1 at comcast.net
Tue Jun 15 17:28:57 EDT 2004
Try a different format for the cmd:
self.popen = popen2.Popen3(["/usr/local/bin/python", "-O",
"myscript.py"])
i.e. pass the cmd as a list of the individual arguments. That avoids
invoking the sh. See <your_python_install>/Lib/popen2.py for more
details.
/Jean Brouwers
ProphICy Semiconductor, Inc.
In article <mailman.10.1087331713.21521.python-list at python.org>, Bob
Swerdlow <rswerdlow at transpose.com> wrote:
> My application starts up a number of processes for various purposes using:
> self.popen = popen2.Popen3("/usr/local/bin/python -O "myscript.py")
> and then shuts them down when appropriate with
> os.kill(self.popen.pid, 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.
>
> Thanks,
>
> Bob Swerdlow
> COO
> Transpose
> rswerdlow at transpose.com
> 207-781-8284
> http://www.transpose.com
>
> ----------------------------------
> Fight Spam!
> Add this link to your signature (as I did): http://wecanstopspam.org
> Click through to find out more.
> ----------------------------------
More information about the Python-list
mailing list