Some system calls can be restarted transparently by the Kernel if the SA_RESTART
flag is used when installing the signal handler, according to man signal(7):
If a blocked call to one of the following interfaces is interrupted by a signal handler, then the call will be automatically restarted after the signal handler returns if the SA_RESTART flag was used; otherwise the call will fail with the error EINTR:
Then it mentions some system calls that can (and can not) be restarted, but does not mention close()
in either places, how would I know if close()
, or any other function, is restartable or not ? does POSIX
specify it or is it a Linux-specific behaviour ? where can I find more info ?