Efs*_*dis 6 c posix interrupt system-calls eintr
那里有专家可以帮助我以下吗?
我在C中有以下系统调用:
access()
unlink()
setsockopt()
fcntl()
setsid()
socket()
bind()
listen()
Run Code Online (Sandbox Code Playgroud)
我想知道他们是否会因错误代码-1和错误的EINTR/EAGAIN而失败.
我应该为这些处理EINTR/EAGAIN吗?
文档中没有提到与EINTR/EAGAIN相关的任何内容,但我看到很多人都在处理它.
哪个是正确的?
以下是我如何注册信号处理程序:https://gitorious.org/zepto-web-server/zepto-web-server/source/b1b03b9ecccfe9646e34caf3eb04689e2bbc54dd: src/ signal-dispatcher- utility.c
使用此配置:https://gitorious.org/zepto-web-server/zepto-web-server/source/b1b03b9ecccfe9646e34caf3eb04689e2bbc54dd : src/server-signals-support-utility.c
还有一个提交,我在一些系统调用中添加了一些EINTR/EAGAIN处理,我知道它返回EINTR或EAGAIN:https://gitorious.org/zepto-web-server/zepto-web-server/commit/b1b03b9ecccfe9646e34caf3eb04689e2bbc54dd
除非你安装一个中断信号处理器(一个安装sigaction省略SA_RESTART标志,或者一个与安装signal在某些系统功能),你不应该期望看到EINTR 的一切。
在您的特定功能列表中,我看不到任何可以体验的功能,EINTR除了fcntl, 并且仅当它用于锁定时。不过,约翰回答中的链接应该有助于回答有关特定功能的问题。
请参阅http://man7.org/linux/man-pages/man7/signal.7.html - 从底部开始阅读,其中谈到“系统调用和库函数的中断......”这是一个Linux man页面,但该信息通常适用于任何 Unix/Posix/Linux 风格的系统。