我已经能够编写一个程序,该程序可以读取任何文本文件.../proc中的文件除外。我尝试从/proc读取的任何文件都显示为空。

但是每当我打字

cat /proc/cpuinfo

在终端上,我看到了我的CPU信息。

当使用文本编辑器(例如gedit或leafpad)打开文件时,我也可以看到该文件。

因此,似乎/proc文件确实是文本文件,但是我的C程序很难读取它们。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

char* readFileString( char* loc ) {
        char *fileDat;
        FILE * pFile;
        long lsize;

        pFile = fopen( loc, "r" );

        // Grab the file size.
        fseek(pFile, 0L, SEEK_END);
        lsize = ftell( pFile );
        fseek(pFile, 0L, SEEK_SET);

        fileDat = calloc( lsize + 1, sizeof(char) );

        fread( fileDat, 1, lsize, pFile );

        return fileDat;
}

int main( void ) {
        char *cpuInfo;

        cpuInfo = readFileString( "/proc/cpuinfo" );

        printf( "%s\n", cpuInfo );

        return 0;
}

知道为什么吗?

最佳答案

/proc中的文件大小为0字节,因为它们是由内核动态生成的。

有关proc文件系统的更多信息,请参见此处:

http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html

关于c - 知道为什么我的C代码无法从/proc读取吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8992430/

10-15 05:08