假设我有一个大文件1Go。我想在偏移量10处 READ 10ko,然后在偏移量235689处 WRITE 645ko,然后在偏移量648975处 READ 150Mo,依此类推...
这两者之间最好的方法是什么?
答案 0 :(得分:2)
在每个I / O上执行mmap(1)听起来并不正确-这会使代码读取器和内核的优化感到困惑,并且没有好处。
如果要明确显示读写内容,可以使用pread(1)/ pwrite(1)或preadv(1)/ pwritev(1)。
如果没有,则可以mmap(1)整个文件(但请确保使用正确的标志,可能是MAP_SHARED
)-Linux不会尝试将整个文件加载到内存中。