可以从socket返回EWOULDBLOCK读取()吗?

时间:2018-06-10 13:33:25

标签: c linux sockets epoll

我的代码使用epoll进行多路复用。遇到EPOLLIN后,它从就绪套接字中读取一个字节。

read(fd, &onebyte, 1);

以上行可以返回EWOULDBLOCK吗?

1 个答案:

答案 0 :(得分:1)

是,

  

<强>错误

     

...

     

EAGAIN或 EWOULDBLOCK

     

文件描述符fd指的是套接字并已标记   非阻塞(O_NONBLOCK),读取将阻塞。 POSIX.1-2001   允许在这种情况下返回错误,并且不需要   这些常量具有相同的值,因此是一个可移植的应用程序   应检查两种可能性

参考: the read() man description