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)
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to