【发布时间】:2011-09-13 20:21:34
【问题描述】:
我看到了这个帖子:system call to map memory to a file descriptor (inverse mmap)?
我想要一个我拥有的库,它希望其接口中的文件描述符能够获得一个文件描述符,该文件描述符将从我 mmaped 文件的内存区域读取。
我需要以下效果:
mmap一个大文件(5gb)的内容到内存获取该内存区域的文件描述符
调用一个获取该文件描述符的库并执行一些操作
我用于mmap 的原始文件描述符当然不起作用,因为它指的是磁盘上的文件。
到目前为止,我能够将文件mmap 存储到内存中,但是我调用了fmemopen,但是在调用该函数时没有设置fileno。任何指针?
我这样做的原因是我试图减少库在处理文件中的数据时所做的复制量。
【问题讨论】:
-
你不能按照你的要求去做。你给出的理由非常笼统。每个人都希望他们的程序尽可能快且尽可能有效。告诉我们这就像告诉我们你这样做的原因是你想要快乐。确切地说,您希望通过这样做来实现什么?目标是尽快将一大块内存转储到文件中吗?
-
本质上,程序读取一个大文件,并处理该文件,我希望这个过程尽可能快,我尝试使用ramfs,它提高了一点速度,但是现在,我正在尝试按照我的要求做,因为那样它会跳过使用 ramfs 创建的文件系统访问的开销。
-
我编辑了您的问题,使您想要做的事情更加清晰。我希望编辑有用。
标签: c++ file mmap file-descriptor shared-memory