是否有系统调用将文件描述符直接绑定到另一个文件描述符?

是否有系统调用将文件描述符直接绑定到另一个文件描述符?

read() 和 write() 循环可能与我正在寻找的一样好,但是仍然存在类似的情况,或者由于我没有预见到的障碍而不可能实现?我很好奇

答案1

没有传统的 Unix 系统调用来“将一个 fd 的全部内容复制到另一个”。 “读取块;如果 EOF 则停止;写入块”的循环始终写入用户空间。

最近添加了一些功能,例如 sendfile(2) 和 splice(2),它们允许您在单个系统调用中执行相当于读写循环的操作。使用它们可以提高性能,但会牺牲可移植性。 (sendfile 在不同的 Unice 上采用不同的参数,因此您将需要一些 #ifdef)

相关内容