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

标签 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 不是很好,任何帮助将不胜感激。谢谢。

最佳答案

一定要检查文件打开是否成功,既然是写入系统文件,那肯定需要你在特权模式下运行。

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

关于c - 尝试刷新缓存时出现段错误(核心转储)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36831284/

相关文章:

x86 - 在两个逻辑 CPU 之间共享一个 TLB 条目(Intel)

C - 使用多线程编程从命令行计算统计值

c - 使用 Cygwin 定位头文件

ajax - 更改jquery中的缓存时间

reactjs - React Native WebView 中的 incognito 和 cacheEnabled 属性有什么区别?

profiler - 在 x86-64 中测量 TLB 未命中处理成本

c - 我需要创建一个程序,提示用户输入要读取的两个输入文件的名称。然后读取文件并显示统计信息

c - C for循环优化

asp.net - ASP.NET创建缓存控件