我正在尝试一些测量机器上TLB大小的方法。我不知何故需要确保CPU不会缓存我用来测量每页平均访问时间的数组元素。所以我在循环中尝试了这个代码,使用here上的答案:
FILE *fp;
fp = fopen("/proc/sys/vm/drop_caches", "w");
fprintf(fp, "3");
fclose(fp);
但是,我收到Segmentation Fault (core dumped)
错误。我不知道为什么会发生这种情况。我对C不是很好,任何帮助都会受到赞赏。谢谢。
答案 0 :(得分:6)
请务必检查文件是否成功,因为您正在写入系统文件,这当然要求您以特权模式运行。
FILE *fp;
fp = fopen("/proc/sys/vm/drop_caches", "w");
if (fp == NULL) {
printf("error %d: %s\n", errno, strerror(errno));
// error handling, exit or return
}
fprintf(fp, "3");
fclose(fp);