gpt4 book ai didi

c - 系统调用和 EINTR 错误代码

转载 作者:太空狗 更新时间:2023-10-29 17:20:34 24 4
gpt4 key购买 nike

有没有专家可以帮助我解决以下问题?

我在 C 中有以下系统调用:

access()
unlink()
setsockopt()
fcntl()
setsid()
socket()
bind()
listen()

我想知道它们是否会因错误代码 -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

在您的特定函数列表中,除了 fcntl 之外,我没有看到任何可以体验 EINTR 的函数,并且仅当它用于锁定时。不过,John 的回答中的链接应该有助于回答有关特定功能的问题。

关于c - 系统调用和 EINTR 错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25729901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com