The UNIX signalling mechanism is implemented for the GNU Hurd
by means of a separate signal thread that is part of every user-space
process. This makes handling of signals a separate thread of control.
GNU Mach itself has no idea what a signal is and
kill
is not a system call (as it typically is in a UNIX system): it's
implemented in glibc.
Why does
kill
hang sometimes?<youpi> kill send the signal to the process <youpi> if the process is hung, killing waits <youpi> signals should be just asynchronous, but apparently for some reason Roland & co wanted some synchronization
Further Reading
D. J. Bernstein's self-pipe trick.
Richard Kettlewell's suggestions about how fork(2) ought to be.