how to kill a subprocess

cerr ron.eggler at gmail.com
Fri Sep 10 13:51:25 EDT 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[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



More information about the Python-list mailing list