On Sep 9, 4:18 pm, MRAB <pyt...@mrabarnett.plus.com> wrote: > On 09/09/2010 23:52, cerr wrote: > > > > > On Sep 9, 3:29 pm, Alain Ketterlin<al...@dpt-info.u-strasbg.fr> > > wrote: > >> cerr<ron.egg...@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[0]+" "+commandlist[1]+" "+commandlist[2]) > > 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 > > or: > > os.kill(process.pid, 9) > > then: > > process.wait() > > or: > > os.waitpid(process.pid, 0)
HI MRAB, Thanks for your suggestion, changed my code now to: process=subprocess.Popen(commandlist) ... ... process.kill() os.waitpid(process.pid, 0) 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? Thanks, Ron -- http://mail.python.org/mailman/listinfo/python-list