我在Linux上以非阻塞模式使用sendfile来使用零拷贝。
但是我不知道如何处理以下情况。
- sendfile(所有数据都缓存在要发送的内核中)
- 在发送所有数据包之前,已修改基础文件。
- 客户端现在将收到修改数据而不是原始数据
你可以看到这里发生的一个例子。
https://git.kernel.org/cgit/docs/man-pages/man-pages.git/patch?id=7b6a3299776b5c1c4f169a591434a855d50c68b4
我的问题是,有什么方法可以在发送所有数据包时收到通知,而不是仅在套接字可用于再次写入时通知?
我已尝试轮询SIOCOUTQ以检查它是否为零,我仍然遇到同样的问题。