Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.dougwise.org!gegeweb.org!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!feeds.phibee-telecom.net!dedekind.zen.co.uk!zen.net.uk!hamilton.zen.co.uk!prichard.zen.co.uk.POSTED!not-for-mail From: Nobody Subject: Re: How to get a PID of a child process from a process openden with Popen() Date: Fri, 08 Apr 2011 20:28:43 +0100 User-Agent: Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity.) Message-Id: Newsgroups: comp.lang.python References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lines: 18 Organization: Zen Internet NNTP-Posting-Host: 6488de82.news.zen.co.uk X-Trace: DXC=G9`3EK2jRY640h7b^f7@N:5[R3ImJb1Y7BL`4TI45FU\ZQc3 X-Complaints-To: abuse@zen.co.uk Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:2871 On Fri, 08 Apr 2011 07:43:41 -0700, Miki Tebeka wrote: >> p = subprocess.Popen(shlex.split("kdesu -u test program")) >> >> How can I aquire the PID of the program which kdesu starts? > > You can run "ps --ppid " and get the line containing test program. > The first field there should be the child process id. This will fail if the kdesu process has terminated at that point (the documentation doesn't say whether it waits for the child to terminate). Once a process' parent has terminated, it's PPID will become 1 (i.e. it will be "adopted" by the init process). There isn't a robust solution to the OP's problem. It's typically impossible to determine whether one process is an ancestor of another if any of the intermediate processes have terminated.