Detecting problems in a forked process

Jim Segrave jes at nl.demon.net
Thu Dec 29 18:39:05 EST 2005


In article <mailman.2690.1135894161.18701.python-list at python.org>,
James Colannino  <james at colannino.org> wrote:
>Hey everyone.  I'm writing a small application in Python that uses 
>os.fork() to create a separate process in which another application is 
>run in the background.  The problem is that I need to know whether or 
>not that separate application managed to start and return from within 
>the parent appropriately.  Here's, roughly, a pseudo example of what I 
>want to do (I know the code itself is not correct):
>
>def function():
>
>    pid = os.fork()
>
>    if pid:
>         do parent stuff
>    else:
>         try:
>              execute the application
>         exeption:
>              somehow return -1 from within the parent process
>
>#try to start another application in the background from within a forked 
>process
>if (function() == -1):
>    fail
>
>Is there a way that I can do this?  I thought, only for a *VERY* brief 
>second, about cheating my way around this with a global variable, but 
>then I realized that this wouldn't work due to the fact that I will have 
>multiple forks doing the same thing at the same time.  Thanks in advance :)

options:

Have the child set it's exit code to indicate success or failure and
use one of the various os.wait functions in the parent to retrieve it.

or

create a pipe before forking and you can pass data back and forth
between the parent and child

or

look at one of the shared memory libraries



-- 
Jim Segrave           (jes at jes-2.demon.nl)




More information about the Python-list mailing list