linux - 当accept() 失败且不是EAGAIN 或EWOULDBLOCK(非阻塞IO)时该怎么办?
问题描述
我正在用 C++ 编写一个服务器程序。我使用带有 poll() 的非阻塞 POSIX 套接字。当服务器套接字可读时,我的代码开始接受()连接。当 accept() 因 EAGAIN 或 EWOULDBLOCK 失败时,执行返回到 poll()。
在我在 Internet 上看到的示例中,如果 accept() 失败且不是 EAGAIN 或 EWOULDBLOCK,它们会终止服务器。我想知道我是否真的应该这样做。当 accept() 失败时,客户端可能做了一些未定义的事情;这是终止我的服务器程序的理由吗?
总而言之,我的问题是,当 accept() 在没有 EAGAIN 或 EWOULDBLOCK 的情况下失败时,我应该如何处理。
谢谢你。
解决方案
推荐阅读
- algorithm - 从源到接收器的步行次数,恰好是 h 个跃点
- sql - 在 PostgreSQL 中使用 @extschema@ 是一个语法错误
- swift - Swift:闭包的执行顺序
- postgresql - 谜团:所有 postgres 数据库都消失了
- android - 逆向工程 BLE 设备 - 校验和?
- android - 单击外部时如何关闭Android对话框(使用FLAG_NOT_FOCUSABLE)
- java - 如何编译一个java项目来获取一个.jar文件
- postgresql - Postgres:忽略级联删除的 DELETE 触发器
- python-3.x - 如果您使用 AttributesToGet 参数在 DynamoDB 上运行扫描,您需要为每个项目的数据足迹付费还是只为请求的属性付费?
- python - 子进程中的 Sox 未创建输出文件