Possible strategy for safe signal handling John Cowan 19 Jul 2019 16:57 UTC
Re: Possible strategy for safe signal handling Lassi Kortela 19 Jul 2019 20:13 UTC

Re: Possible strategy for safe signal handling Lassi Kortela 19 Jul 2019 20:13 UTC

> I ran into this strategy in a C program and I'm posting it here to get
> it on record.
>
> The idea is to create a pipe when a process starts up and give the write
> end to a global signal-handling function.  When a signal that is not
> ignored or defaulted is received, a packet describing the signal is
> written into the pipe with write(2), a known signal-safe operation, to
> the pipe.  The handler then returns.

I don't understand all the details, but the idea sounds brilliant. It
sounds like a further developed version of the self-pipe trick from Dan
Bernstein, early 1990s: <https://cr.yp.to/docs/selfpipe.html>

> The read end of this pipe is examined by the Great Big Select or similar
> multiplexer

I'm under the impression that poll() provides a clean and portable
interface nowadays (and it plenty fast unless you need to multiplex
hundreds of file descriptors). Please correct if wrong.