epoll的EPOLLOUT事件

文档上说epoll监听的描述符可写的时候会触发EPOLLOUT事件,

可是我想知道在接受到EPOLLOUT后,调用write还有限制吗,比如write过大的数据会不会还是返回EAGAIN

想像这样的场景

  • 服务器收到客户端的请求,要获取一张图片。
  • 服务器读取该图片,保存为字节数组(**char***)
  • 然后调用write欲将数据写入套接字,却返回EAGAIN
  • epoll_ctl为套接字添加EPOLLOUT的事件监听

    那么问题来了,当**EPOLLOUT**事件发生时,往该套接字写该图片的数据,是否能成功
    

服务器使用C语言开发。不过我想其他语言的epoll都是从C语言绑定过去的,原理应该一样。

这里有点要注意的是,第一次write失败是因为数据量太大,如果write数据少一点是可以成功的。(至少从经验看是如此)那么当EPOLLOUT触发时能保证write一张大图片的数据会成功吗。

原文阅读

"文章为作者独立观点, 不代表老订阅立场"

本站作者

每日荐书

在不完美的世界力求正常——读《公司的坏话》

书名:《公司的坏话》

作者:李天田(脱不花妹妹)

出版社:北京大学出版社

赞助商

广告