how to kill a subprocess
ron.eggler at gmail.com
Fri Sep 10 19:51:25 CEST 2010
On Sep 9, 4:18 pm, MRAB <pyt... at mrabarnett.plus.com> wrote:
> On 09/09/2010 23:52, cerr wrote:
> > On Sep 9, 3:29 pm, Alain Ketterlin<al... at dpt-info.u-strasbg.fr>
> > wrote:
> >> cerr<ron.egg... at gmail.com> writes:
> >>> I'm calling a python script from a php script which again calls a perl
> >>> script with subprocess.popen().
> >>> This seems to work fine so far only that once the python script
> >>> completed it is becoming a zombie because the perl script in the
> >>> background is still running... so before i exit the python script, i
> >>> would need to kill my perl subprocess.
> >>> How can i do so?
> >> x.terminate() (and then x.wait()) where x is the value returned by
> >> subprocess.Popen().
> > Well, this is what I have:
> > writelog("starting GPS simulator")
> > commandlist=[GPSsim,proto,GPSfile]
> > writelog(commandlist+" "+commandlist+" "+commandlist)
> > process=subprocess.Popen(commandlist)
> > writelog("GPS simulator started")
> > ...
> > ...
> > os.kill(process.pid,9)
> > os.wait()
> > but this is not working for me... :( any clues?
> >> P/S: I'm not sure why the python process survives, and I think your use
> >> of "zombie" is not correct (afaik a zombie is an exited process whose
> >> parent hasn't called wait() yet)
> > This is what I have:
> > localhost cgi-bin # ps ax | grep py
> > 11853 ? Z 0:00 [python2.6]<defunct>
> > 12029 pts/1 S+ 0:00 grep --colour=auto py
> > The 'Z' you see there stands for Zombie
> How about:
> process.kill() # New in Python 2.6
> os.kill(process.pid, 9)
> os.waitpid(process.pid, 0)
Thanks for your suggestion, changed my code now to:
but it's not killing the process running. it still runs in the
background and i don't see any errors, we're running python 2.6.4
any more clues?
More information about the Python-list