当前位置: 技术问答>linux和unix
关于epoll ET模式read的一些问题
来源: 互联网 发布时间:2017-01-03
本文导语: 小弟刚接触linux网络编程不久,对epoll的ET模式的read的返回值判断有些疑惑。 man里面说,如果用ET模式,要一直read直到返回EAGAIN(by waiting for an event only after read(2) or write(2) return EAGAIN)。 现在有这样的情况 reci...
小弟刚接触linux网络编程不久,对epoll的ET模式的read的返回值判断有些疑惑。
man里面说,如果用ET模式,要一直read直到返回EAGAIN(by waiting for an event only after read(2) or write(2) return EAGAIN)。
现在有这样的情况
reciveSize = read(sockfd, buffer, BUF_LEN);
reciveSize小于BUF_LEN的时候,我是可以跳出read的循环了还是必须还要继续read直到出现EAGAIN呢?
理论上返回值小于BUF_LEN不是就已经把缓冲区读完了吗?
如果必须要read到EAGAIN出现,那么为什么呢?有没有比较懂的人能指点一二,感激不尽!
man里面说,如果用ET模式,要一直read直到返回EAGAIN(by waiting for an event only after read(2) or write(2) return EAGAIN)。
现在有这样的情况
reciveSize = read(sockfd, buffer, BUF_LEN);
reciveSize小于BUF_LEN的时候,我是可以跳出read的循环了还是必须还要继续read直到出现EAGAIN呢?
理论上返回值小于BUF_LEN不是就已经把缓冲区读完了吗?
如果必须要read到EAGAIN出现,那么为什么呢?有没有比较懂的人能指点一二,感激不尽!
|
是,返回值小于请求值就可以返回了。