Signals are the way that the operating system and other processes send alerts or requests to a process (to complement system calls, which are the way that a process makes requests to operating system).
- Polling with waitpid and WNOHANG as a step toward motivating signals.
- Introduction to handling and sending signals
- Example program that handles SIGCHLD.
- Details on signal properties and the signal state that must be kept for each process.
- Using sigprocmask to change the set of signals that are blocked for a process.
- Communication from a signal handler requires a kind of synchronization with the main program that can be implemented with volatile.
- Another example of how signal handling is a form of concurrency, and how blocking signals can synchronize interactions.
- Only async-signal-safe functions can be called safely from a signal handler.
- Signals handlers can interfere with errno, so handlers should save and restore it.
- Summary of rules to follow to make your signal handlers work correctly.
- Using sigsuspend to wait for a signal, and why using sleep instead doesn’t work.
- Stopping and continuing processes with SIGSTOP and SIGCONT.
- Process groups and the way that they interact with signals, especially as sent by a shell.