Avoid race condition with Popen.send_signal
Jérôme
jerome at jolimont.fr
Mon Jan 2 18:09:14 EST 2012
Hi all.
When a subprocess is running, it can be sent a signal with the send_signal
method :
process = Popen( args)
process.send_signal(signal.SIGINT)
If the SIGINT is sent while the process has already finished, an error is
raised :
File "/usr/lib/python2.7/subprocess.py", line 1457, in send_signal
os.kill(self.pid, sig)
OSError: [Errno 3] Aucun processus de ce type
To avoid this, I can check that the process is still alive :
process = Popen( args)
process.poll()
if (None == process.returncode):
process.send_signal(signal.SIGINT)
It makes safer, but there is still an issue if the process ends between
poll() and send_signal().
What is the clean way to avoid this race condition ?
Should I use try/except to catch the error or is there a more elegant way to
go ?
Thanks.
--
Jérôme
More information about the Python-list
mailing list