一段时间以来,我一直在研究轮询 TCP 守护进程。最近,我读到非阻塞套接字有时会在 send() 或 recv() 期间抛出 EWOULDBLOCK 错误。我的理解是,如果 recv() 抛出 EWOULDBLOCK,这(通常)意味着没有任何东西可以接收。但我不清楚的是在什么情况下 send() 会抛出 EWOULDBLOCK,以及处理此类事件的正确程序是什么?
如果 send() 抛出 EWOULDBLOCK,守护进程是否应该简单地从该事件继续移动到下一个事件?使用像 epoll 这样的轮询接口,当描述符准备好写入时会触发一个新事件吗?