It does. Just set SA_RESTART in sigaction. glibc even defaults to this
for signal(2), but you should not use that anyways.
Modern signals also support telling you about the context and their cause
and even some payload (via siginfo_t/SA_SIGINFO), unfortunately this so far
only works for queued realtime signals in Linux.
You can e.g. use it by setting a realtime signal (>SIGRTMIN) to a file
descriptor for SIGIO using fcntl(fd,F_SETSIG,sig), and then receive
the fd that caused the SIGIO and even the cause in siginfo->si_band/si_fd.
Even "old" signals can tell you something about their context if you don't
mind CPU specific code via sigcontext_struct.
-Andi
-- This is like TV. I don't like TV.- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/