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