subprocess kill
Nobody
nobody at nowhere.com
Wed Dec 9 12:24:42 EST 2009
On Mon, 07 Dec 2009 11:04:06 +0100, Jean-Michel Pichavant wrote:
> When using shell=True, your process is started in a shell, meaning the
> PID of your subprocess is not self.luca.pid, self.luca.pid is the PID of
> the shell.
This isn't true for a simple command on Unix (meaning a program name plus
arguments, and redirections, rather than e.g. a pipeline or a command
using subshells, flow-control constructs, etc).
For a simple command, "/bin/sh -c 'prog arg arg ...'" will exec() the
program *without* fork()ing, so the program will "take over" the shell's
process and PID.
You can verify this by running e.g.:
import subprocess
p = subprocess.Popen('sleep 10', shell=True)
print p.pid
subprocess.call('ps')
p.wait()
More information about the Python-list
mailing list