Restoring signals before os.exec
A short note. As both
the signal
module doc and
the subprocess
module doc
(almost at the end, when it finally goes around to talk about the restore_signals
parameter), Python3 disables the following signals, so it can properly report
them as exceptions:
SIGPIPE
SIGXFZ
SIGXFSZ
SIGINT
But if you're executing processes with any of the
os.exec*()
functions, you have to restore them by hand. Of course, the option is
to use subprocess
, which is best for most cases; not for ayrton
.
I spent a long time analyzing the process-which-didn't-die-on-SIGPIPE
's source
code and wondering what was all this about. The I compared the same pipeline
under bash
and ayrton
with strace
to find the real culprit.