Abstract: Signals are an ancient mechanism of communicating asynchronous events to C programs. Signals make it so that functions appear to magically get invoked spontaneously as your program runs, with just the odd system call returning and setting errno to EINTR as the only side effect. I'll try and demystify the mechanism by which signal handlers get invoked - how we go from executing your main program, to executing a signal handler, and getting back to where you were interrupted.
Slides: https://peadar.github.io/signals/