get the en of a program running in background
awalter1 at cegetel.net
Mon Sep 11 09:32:21 CEST 2006
Thanks a lot.
It does exactly what I expected and it's very simple
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