![]() |
Defunct Processes With subprocess.Popen
Hi!
I'm currently writing a script which launches external programs, but it keeps leaving zombie/defunct processes behind, until I kill the launching script, which is a bit of a pain, as it's supposed to be a daemon. The code I'm using is: newPid = subprocess.Popen( cmdLine[ 1: ], executable=cmdLine[ 0 ], close_fds=True ).pid I've tried calling it using the shell=True flag, but that leaves a zombie for the sh, instead. I'm not interested in any output, the only thing I need returning, is the pid of the new process. I've tried using spawn*, with the same results. Does anyone have any ideas? Thanks. J |
Re: Defunct Processes With subprocess.Popen
John Abel <jabel@plus.net> writes:
> Hi! > > I'm currently writing a script which launches external programs, but > it keeps leaving zombie/defunct processes behind, until I kill the > launching script, which is a bit of a pain, as it's supposed to be a > daemon. The code I'm using is: > > newPid = subprocess.Popen( cmdLine[ 1: ], executable=cmdLine[ 0 ], > close_fds=True ).pid > > I've tried calling it using the shell=True flag, but that leaves a > zombie for the sh, instead. I'm not interested in any output, the > only thing I need returning, is the pid of the new process. I've > tried using spawn*, with the same results. Does anyone have any ideas? The processes are hanging around in a zombie state so the parent (or someone) can get their exit status. Try calling os.wait() until it returns the exit status for all the processes you've started. <mike -- Mike Meyer <mwm@mired.org> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. |
Re: Defunct Processes With subprocess.Popen
Mike Meyer wrote:
>John Abel <jabel@plus.net> writes: > > > >>Hi! >> >>I'm currently writing a script which launches external programs, but >>it keeps leaving zombie/defunct processes behind, until I kill the >>launching script, which is a bit of a pain, as it's supposed to be a >>daemon. The code I'm using is: >> >>newPid = subprocess.Popen( cmdLine[ 1: ], executable=cmdLine[ 0 ], >>close_fds=True ).pid >> >>I've tried calling it using the shell=True flag, but that leaves a >>zombie for the sh, instead. I'm not interested in any output, the >>only thing I need returning, is the pid of the new process. I've >>tried using spawn*, with the same results. Does anyone have any ideas? >> >> > >The processes are hanging around in a zombie state so the parent (or >someone) can get their exit status. > >Try calling os.wait() until it returns the exit status for all the >processes you've started. > > <mike > > Ahh, OK. Thanks for that. Works now. J |
| All times are GMT. The time now is 11:39 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.