On 02/01/2012 23:09, Jérôme wrote:
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 ?

I think that catching the exception is probably the most Pythonic way.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to