我试图读取proc / stat文件,但我不能确定我的代码是否有效,因为我尝试读取其他文件并且它工作得很好.. 这是代码:
#include <stdio.h>
#include <stdlib.h> // for the malloc
int main (int argc,char *argv[])
{
char *file_name = "/proc/stat";
char *contents;
FILE *file;
int filesize = 0;
file = fopen(file_name, "r");
if(file != NULL)
{
//get the file size
fseek(file, 0, SEEK_END);
filesize = ftell(file);
fseek(file, 0, SEEK_SET);
printf("the file size is: %d\n", filesize);
contents = (char *)malloc(filesize+1); // allocate memory
fread(contents, filesize,1,file);
contents[filesize]=0;
fclose(file);
printf("File has been read: %s \n", contents);
}
else
{
printf("the file name %s doesn't exits", file_name);
}
return 0;
}
答案 0 :(得分:2)
您无法确定/ proc中特殊文件的大小,也无法在其中找到最终结果。它们的内容是即时生成的。使用这些文件,您必须继续阅读,直到遇到EOF。您无法预先知道要获得多少数据。
所以继续读取512字节块中的数据,直到你得到一个简短的读取。然后你就会知道你不能再读取任何数据了。
编辑: 我刚刚想到我在过去的问题中回答了这个问题:/proc/[pid]/cmdline file size