我正在尝试用C编写一个程序,它将从/proc/stat读取,等待一秒钟,然后在一秒钟后再次从/proc/stat;当前";CPU使用情况,以及每个核心的使用情况。我认为最简单的方法是将/proc/stat的结果保存到一个文件中,并为第二个"保存第二个文件;状态";的。然后我会从中阅读并从中计算。不过,出于某种原因,我不知道为什么我的两个文件都没有被创建。
int main() {
FILE *state0;
FILE *state1;
state0 = fopen("/proc/stat", "w+");
delay();
state1 = fopen("/proc/stat", "w+");
char *con0 = malloc(500);
fprintf(state0, con0);
fclose(state0);
fclose(state1);
return 0;
}
非常感谢您的帮助
问题是,当您试图通过调用来保存文件时
fprintf(state0, con0);
您正试图将分配在con0
的内存写入state0
,后者是指向/proc/stat
的指针。
这当然会失败,因为您没有写入/proc/stat
的权限,而这是不应该的。
如tadman所述,要打开这些文件进行读取,您需要以"r"
模式打开文件:
FILE *state0;
FILE *state1;
state0 = fopen("/proc/stat", "r");
delay();
state1 = fopen("/proc/stat", "r");
您想要做的是创建一个单独的文件,例如:
FILE *newfile;
newfile = fopen("/tmp/procstattemp", "w");
并使用写入该文件
fprintf(newfile, con0);
此外,您正在为con0
分配内存,但尚未向该缓冲区写入任何内容。如果要将/proc/stat
保存到文件中,则在写入临时文件之前,需要读取该文件并将其复制到con0
中。
另请参阅:
http://www.cplusplus.com/reference/cstdio/fprintf/
http://www.cplusplus.com/reference/cstdio/fopen/