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