Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
This chapter continues the description of signals begun in the previous chapter. It focuses on signal handlers, and extends the discussion started in Section 20.4. Among the topics we consider are the following:
how to design a signal handler, which necessitates a discussion of reentrancy and async-signal-safe functions;
alternatives to performing a normal return from a signal handler, in particular, the use of a nonlocal goto for this purpose;
handling of signals on an alternate stack;
the use of the sigaction() SA_SIGINFO flag to allow a signal handler to obtain more detailed information about the signal that caused its invocation; and
how a blocking system call may be interrupted by a signal handler, and how the call can be restarted if desired.