无法在linux中读取文件

时间:2013-02-24 13:18:12

标签: c linux

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

}

1 个答案:

答案 0 :(得分:2)

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

所以继续读取512字节块中的数据,直到你得到一个简短的读取。然后你就会知道你不能再读取任何数据了。

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