From The Linux Programming Interface
a signal is delivered at one of the following times:
- when the process is rescheduled after it earlier timed out (i.e., at the start of a time slice); or
- at completion of a system call (delivery of the signal may cause a blocking system call to complete prematurely).
How can I tell if a signal can interrupt the execution of a system call?
What system calls can be interrupted by what signals, in the sense of terminating prematurely?
What system calls are not interruptible by what signals?