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

Stefan Sonnenberg-Carstens <stefan.sonnenb...@pythonmeister.com>

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.