SA_RESTART
根据 man signal(7) ,如果在安装信号处理程序时使用了标志,则内核可以透明地重新启动一些系统调用:
如果对以下接口之一的阻塞调用被信号处理程序中断,则如果使用了 SA_RESTART 标志,则在信号处理程序返回后将自动重新启动调用;否则调用将失败并出现错误 EINTR:
然后它提到了一些可以(也不能)重新启动的系统调用,但close()
在任何一个地方都没有提到,我怎么知道close()
或任何其他功能是否可重新启动?确实POSIX
指定了它还是特定于 Linux 的行为?我在哪里可以找到更多信息?