UNIX signals are a means to asynchronously invoke a specific function (signal handler) in a process. It's a rather limited form of doing IPC.

Signalling may impact on system calls that are executing at the same time in that they may be completely aborted, return incomplete results, scheduled for restarting, or cause signal delivery to be blocked upon the system call's completion.

An explanation can be found in the relevant standards, an overview, including UNIX signals' deficiencies is given in Neil Brown's 2010-11-16 article Ghosts of Unix past, part 3: Unfixable designs, for example.

In a GNU/Hurd system, the signalling system is implemented in glibc.

Further Reading