You need to call os.waitpid() at some point to clean up finished processes. - C On Aug 2, 2006, at 1:59 PM, Jonathan wrote:
----- Original Message ----- From: "Alan" <alanwilter@gmail.com> To: <zope@zope.org> Sent: Wednesday, August 02, 2006 1:52 PM Subject: [Zope] defunct process with os.spawn*
Dears,
Now I am facing an annoying problem.
I have an application in Zope which calls a External Method, which calls a bash script via:
var_pid = os.spawnlp(os.P_NOWAIT, 'script.sh', 'script.sh', arg1,arg2)
The idea is to start some programs in background (which will take hours running) and I need to pass arguments and track its PID for eventually checking its status. So os.spawnlp seemed the perfect solution.
However, when my bash script finished, my processes gets <defunct> childed to the Zope process. And only restarting Zope to get rid of such defunct process, an unthinkable solution.
It sounds like you are generating zombie processes (child processes which have completed, but are not handled by the processes that spawned them). Try googling: python reap spawned process
Jonathan
_______________________________________________ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )