如何在Linux系统上以编程方式清除C++中的文件系统内存缓存?

Chr*_*ian 7 c c++ linux caching

我正在用C++编写一个基准测试工具,我希望在实验之间清除文件系统内存缓存.我知道以下控制台命令:

sync
echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在C++中直接以编程方式执行此操作?

任何帮助表示赞赏!

Ana*_*tts 12

像这样的东西应该做的伎俩:

int fd;
char* data = "3";

sync();
fd = open("/proc/sys/vm/drop_caches", O_WRONLY);
write(fd, data, sizeof(char));
close(fd);
Run Code Online (Sandbox Code Playgroud)


sla*_*ppy 12

写信给它:

sync();

std::ofstream ofs("/proc/sys/vm/drop_caches");
ofs << "3" << std::endl;
Run Code Online (Sandbox Code Playgroud)