有没有办法来禁用特定进程的文件caching?
我有两个进程运行A和B.
我想由A打开的文件保留在caching中。
而且我不想为B启用文件caching,所以它不会replace内存中进程caching的文件。
有没有办法来禁用特定进程的文件caching?
没有我知道的…唯一的选择是全球/设备特定的:
还有一点:
即使如果你可以做你所要求的,也不能保证任何其他进程(C,D,E等)以“内存中的进程A所缓存的文件”被取代的方式行事。
更新 – 从OP的评论表现来看:
Linux提供了一种称为“内存映射文件”的东西(就像大多数现代操作系统一样) – 基本上这是一种访问内存中文件内容的方式…操作系统将文件(取决于给定的参数)分配给地址空间并将该文件的内容加载到该地址空间(同样:确切的行为取决于给定的参数)。
你会在流程A中做到这一点,以达到你想要的…
详细了解mmap
API调用 。
进程B可以使用fadvise()
指示内核不缓存从给定文件描述符读取的数据。