出于测试目的,我可以通过写入 Linux 中 procfs 下的 drop_caches 文件来删除缓存内存。我只能以 root 身份执行此操作。这是在嵌入式 Linux 上,所以没有 sudo。
sync; echo 3 > /proc/sys/vm/drop_caches
我可以通过从帖子中执行某些操作在 C++ 中以编程方式写入文件 -->如何在 Linux 系统上以编程方式清除 C++ 中的文件系统内存缓存?
sync();
std::ofstream ofs("/proc/sys/vm/drop_caches");
ofs << "3" << std::endl;
挑战是希望在以非 root 用户身份运行应用程序时执行此操作。重新启动时,权限如下所示:
# cd /proc/sys/vm/
# ls -lrt drop_caches
-rw-r--r-- 1 root root 0 Feb 13 19:50 drop_caches
而且您似乎无法更改这些权限 - 即使以 root 身份:
# chmod 777 drop_caches
chmod: drop_caches: Operation not permitted
# chown user:user drop_caches
chown: drop_caches: Operation not permitted
我怎样才能在 Linux 上做到这一点?是否可以更改 procfs 文件的权限?如有必要,我可以完全定制我的内核。谢谢 -