在接收管道数据的应用程序中使用mmap()?

时间:2013-10-17 12:20:39

标签: c++ c linux pipe mmap

是否可以在Linux上的C ++应用程序中使用mmap(),它必须从文件接收管道输入,如果是这样,这比从流中读取单个/ page_amount字节更快吗?

我不确定mmap()是否可行,因为管道涉及流而不是mmap()需要立即提供所有数据?

1 个答案:

答案 0 :(得分:1)

您不能mmap一个流,因为流缓冲区中的数据只能读取一次。此外,可接收数据的长度在运行时是不确定的。最好的办法是mmap足够的内存量,然后将其用作接收缓冲区。

如果您使用stdio函数从流中读取数据,则块大小无关紧要。库将自动选择最佳的库(通常一次一页)。但是如果您打算使用read,那么阅读大量的页面将为您提供最佳性能。