Go to Google Groups Home    comp.lang.python
Re: subprocess leaves child living

Thomas Dybdahl Ahle <lob...@gmail.com>

Den Tue, 05 Jun 2007 14:07:44 +0200 skrev Stefan Sonnenberg-Carstens:

> Thomas Dybdahl Ahle schrieb:
>> Hi, When I do a small program like

>> from subprocess import Popen
>> popen = Popen(["ping", "google.com"]) from time import sleep
>> sleep(100)

>> start it and kill it, the ping process lives on. Is there a way to
>> ensure that the ping process is always killed when the python process
>> is?
>> I can't use atexit, as ping then isn't killed when python is killed "in
>> the hard way"

> Calling popen.close() perhaps ?
> You basically open a pipe, which spawns a shell and the command is then
> started in there.
> So, if your program quits, the spawned shell is still alive, only the
> pipe is dead.

Problem is - I can't do that when I get killed.
Isn't it possible to open processes in such a way like terminals? If I
kill the terminal, everything open in it will die too.