尝试刷新缓存时出现分段错误(核心转储)错误

时间:2016-04-25 02:49:45

标签: c caching tlb

我正在尝试一些测量机器上TLB大小的方法。我不知何故需要确保CPU不会缓存我用来测量每页平均访问时间的数组元素。所以我在循环中尝试了这个代码,使用here上的答案:

FILE *fp;
fp = fopen("/proc/sys/vm/drop_caches", "w"); 
fprintf(fp, "3"); 
fclose(fp);

但是,我收到Segmentation Fault (core dumped)错误。我不知道为什么会发生这种情况。我对C不是很好,任何帮助都会受到赞赏。谢谢。

1 个答案:

答案 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);