内容:

在文本文件上工作。
Linux,debian 64位。
C99-C11

需要:

跟踪该文件的打开的索引。
例如:

我打开索引65,然后是235,然后是12,然后是1024,以读取字母。
我希望能够跟踪那些索引[12,65,235,1024]。

我读了内核保持结构,但是..

代码中缺少用于跟踪的malloc数组是一个约束。

为什么呢看看这是多么可能/不切实际。

系统(显然是?)已经为我跟踪了,对吧?

题 :

内核可以帮助我跟踪mmap'd文件的已打开索引(如果可能的话还可以排序),以避免代码中出现malloc'd索引?

编辑:

它不是索引文件。这是一个基本文本文件,其中包含一些文本。我想跟踪访问的字节,如果内核已经知道已加载/访问了哪些字节,我也不想使用数组。

最佳答案

在讨论任何事物的“跟踪”时,重要的问题是“什么是主键?” /“您打算如何访问它?”。

内核只需要知道“地址A具有文件X的映射,偏移Y,长度Z”。无需浪费资源就可以知道文件X的映射位置。内核知道文件被映射到任何地方的唯一方法很可能是某人正在使用该文件的引用计数,它甚至可能不知道这些文件是mmap:s还是只是打开的文件描述符。

实际上,当文件被强制无效时(例如在卸载时),可以通过用无效的文件对象替换文件对象而不是跟踪映射并销毁它们来实现(这在Linux中已有10年的历史了,它可能已经从那以后发生了变化,我只知道其他操作系统仍然可以正常工作)。

因此,回答您的问题:内核可能并不关心知道您需要知道的内容。您需要自己做。特别是如果您想完全便携。

关于c - Mmap:跟踪访问的区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24239094/

10-16 06:31