c - 应该关闭损坏的套接字吗?
问题描述
我正在读取 TCP 套接字:
int read_result = recv(socket_fd, &some_struct, some_size, 0);
如果read_result
等于-1
,我应该仍然调用close
该文件描述符还是离开它?
解决方案
根据recv
手册页,有许多recv
可能返回的原因-1
(EAGAIN、EBADF、EINVAL、ENOMEM 等)。我建议检查errno
这些预期的返回值并修改你的代码以采取相应的行动。如果您正在编写库,您可能希望返回特定于库的错误代码。如果您是应用程序,您可能希望死掉或向调用者返回错误代码。这将取决于上下文。
然而,解决这个问题的第一步是了解可以返回的各种错误代码并相应地处理它们。
推荐阅读
- python - 气流 - 告诉 DAG 跳过每月 2 日的处理
- tesseract - Tesseract 给出警告信息
- java - 通过调用定义 WebElement 路径的方法在 JUnit @Test 中选择 WebElements
- amazon-web-services - AWS S3 上的静态 Web 托管给了我“403 权限被拒绝”
- jquery - 创建文本输入并根据数组长度分配一个值,它是使用 jQuery 在页面加载时的值
- javascript - 有没有办法在点击一定次数后将表单按钮链接到不同的页面?
- javascript - 表单未从数据库呈现
- mysql - mysql drop partition 和 truncate partition 有什么区别
- java - 春季数据库触发器
- sql - 如何将数组的列更改为 spark scala 中的分隔列?