【发布时间】:2013-07-02 07:46:27
【问题描述】:
我想通过 linux-aio 将数据从一个文件描述符发送到另一个文件描述符,而无需缓冲,也无需将数据传入和传出用户空间。 linux-aio 可以实现这样的 sendfile64() 功能吗?
我查看了一些 linux-aio 示例(在 C/C++ 中)和简单的文件复制程序。所有这些示例都在读取 -> 缓冲区 -> 写入。
问候, 菲利普
【问题讨论】:
-
如果你想在后台使用
sendfile,为什么不在单独的线程或进程中进行呢? -
是的,我可以使用来自多个 posix 线程的 sendfile,但我想要异步 sendfile 之类的东西。
-
aioapi 的异步行为与调用线程有何不同? -
创建一个线程/进程,调用
sendfile,从新线程/进程向父线程/进程发送信号。哒哒,异步sendfile! :) -
是的,我也可以使用 sendfile 非阻塞并在多个线程上以块的形式平衡操作,但内核内部的 IO 操作仍然是“普通 IO”,文件系统 IO 仍然是同步的,操作可以阻塞内核内部。 lwn.net/Kernel/Index/#Asynchronous_IO