我正在尝试用C语言编写一个在Linux下运行的程序。基本上我试图绘制一个统计数据,应显示如下:pid, number of process, page fault(major/minor) and total number of page faults.
val, pid, pagefault, number of processes, total number of pages faults(Majpr+Minor)
1 127 major 1 2323
对于一个想法,我从以下位置获取了代码解决方案产生主要页面错误及其代码:
#include <fcntl.h>
#include <stdio.h>
#include <sys/mman.h>
#include <sys/stat.h>
int main(int argc, char ** argv) {
int fd = open(argv[1], O_RDONLY);
struct stat stats;
fstat(fd, &stats);
posix_fadvise(fd, 0, stats.st_size, POSIX_FADV_DONTNEED);
char * map = (char *) mmap(NULL, stats.st_size, PROT_READ, MAP_SHARED, fd, 0);
if (map == MAP_FAILED) {
perror("Failed to mmap");
return 1;
}
int result = 0;
int i;
for (i = 0; i < stats.st_size; i++) {
result += map[i];
}
munmap(map, stats.st_size);
return result;
}
这段代码确实做到了,但给出了太多的东西。我还看到了这个链接:https://stackoverflow.com/questions/23302763/measure-page-faults-from-ac-program 但未能弄清楚我如何获得页面错误(主要/次要)。谁能告诉我如何判断主要和次要的错误?