Describe the aberrant Linux behavior whereby a stop signal

plus SIGCONT can interrupt some system calls, even if no
signal handler has been established, and note the system
calls that behave this way.
This commit is contained in:
Michael Kerrisk 2008-07-04 13:15:12 +00:00
parent af3c87d084
commit 48b9ec3fe1
1 changed files with 40 additions and 0 deletions

View File

@ -608,6 +608,46 @@ file descriptor.
.IP *
.BR io_getevents (2).
.RE
.SS Interruption of System Calls and Library Functions by Stop Signals
On Linux, even in the absence of signal handlers,
certain blocking interfaces can fail with the error
.BR EINTR
after the process is stopped by one of the stop signals
and then resumed via
.BR SIGCONT .
This behavior is not sanctioned by POSIX.1, and doesn't occur
on other systems.
The Linux interfaces that display this behavior are:
.RS 4
.IP * 2
.BR epoll_wait (2),
.BR epoll_pwait (2).
.IP *
.BR semop (2),
.BR semtimedop (2).
.IP *
.BR sigtimedwait (2),
.BR sigwaitinfo (2).
.IP *
.BR read (2)
from an
.BR inotify (7)
file descriptor.
.IP *
Linux 2.6.21 and earlier:
.BR futex (2)
.BR FUTEX_WAIT ,
.BR sem_timedwait (3),
.BR sem_wait (3).
.IP *
Linux 2.6.8 and earlier:
.BR msgrcv (2),
.BR msgsnd (2).
.IP *
Linux 2.4 and earlier:
.BR nanosleep (2).
.RE
.SH "CONFORMING TO"
POSIX.1
.SH BUGS