get the en of a program running in background

awalter1 awalter1 at cegetel.net
Mon Sep 11 08:25:48 EDT 2006


Hi,

It works when a click on a button launches a program P.
Now, I want that a click on another button launches another program P'

In this case there is only one signal for two events : the end of P and
the end of P'.
How can distinct the two cases.

In addition, what is the use of the frame parameter of the logsignal
procedure ?
It seems to be a little bit complicated to manipulate it.

Thank for your help


oripel a écrit :

> Module 'subprocess' may be a better fit for you than fork+exec.
> Here's an example with a signal handler
> (1) use subprocess, don't fork and exec
> (2) maybe this will help:
>
> ---
> import signal, subprocess
>
> # define the signal handler
> def logsignal(signum, frame):
>    print "Caught signal"
>
> # register the signal handler for SIGCHLD
> signal.signal(signal.SIGCHLD, logsignal)
>
> # run the subprocess in the background
> subprocess.Popen(["sleep", "3"])
>
> # Do more stuff
> ---
>
> The signal handler will be called when the child process ends. Just
> register your own handler.
>
> You only need to register the handler once.
> If you need this for a single run only, or need different behavior for
> different subprocesses, have your signal handler re-register the old
> handler (see the docs for module 'signal').
>
> A note about the example: if you run it as is, the parent process will
> end before the child process does. Add a call to 'os.wait()' to have it
> wait for the child. In your GUI you probably won't want it.
>
> Hope this helps.
>
> awalter1 wrote:
> > Hi,
> > I develop a graphical user interface (with pyGTK) where a click on a
> > button shall launch a program P in background. I want to get the end of
> > this program P but I don't want that my HMI be freezed while P is
> > running.
> > I try to use fork examplesI found on the web, but it seems to not run
> > as expected.
> > I am not familiar with these techniques in unix as well as python.
> > But I suppose that my needs are usual, despite that I don't find
> > anything on the web ...
> > Is someone can give me a standard way to call a background program,
> > wait its end, with an IHM still active ?
> > 
> > Thank a lot for any idea.




More information about the Python-list mailing list