如果我有一个文件描述符(套接字 fd),如何检查该 fd 是否可用于读/写?
在我的情况下,客户端已连接到服务器并且我们知道 fd。
但是,服务器会断开套接字,有什么线索可以检查吗?
你要fcntl()
检查 fd 上的读/写设置:
#include <unistd.h>
#include <fcntl.h>
int r;
r = fcntl(fd, F_GETFL);
if (r == -1)
/* Error */
if (r & O_RDONLY)
/* Read Only */
else if (r & O_WRONLY)
/* Write Only */
else if (r & O_RDWR)
/* Read/Write */
但这是与套接字不再连接时不同的问题。如果您已经在使用select()
or poll()
那么你就快到了。poll()
如果您指定,将很好地返回状态POLLERR
in events
并检查它revents
.
如果您正在执行正常的阻塞 I/O,那么只需在读/写错误出现时对其进行处理并正常恢复即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)