-1

我试图读取 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;

}

4

1 回答 1

2

您无法确定 /proc 中特殊文件的大小,也无法在它们中寻找到最后。它们的内容是即时生成的。使用这些文件,您必须继续阅读,直到遇到 EOF。您无法事先知道将获得多少数据。

因此,请继续读取 512 字节块中的数据,直到您获得短读。然后你就会知道你不能再读取任何数据了。

编辑:我突然想到我已经在过去的问题中回答了这个问题:/proc/[pid]/cmdline file size

于 2013-02-24T13:26:04.337 回答