为了测试目的,我可以通过在procfs下写入到drop_caches文件来清除Linux中的缓存内存。只有作为root用户才能执行此操作。由于这是在嵌入式Linux上进行的操作,因此没有sudo。
sync; echo 3 > /proc/sys/vm/drop_caches
我可以通过从 如何在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文件的权限?如果必要,我可以完全自定义我的内核。谢谢 -