Мне удалось написать программу, которая может читать любые текстовые файлы ... кроме найденных в / proc. Любой файл, который я пытаюсь прочитать из / proc, отображается пустым.
Но всякий раз, когда я печатаю
cat /proc/cpuinfo
на терминале, мне сообщают информацию о моем процессоре.
Я также вижу файл, когда открываю его в текстовом редакторе, таком как 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;
}
Есть идеи, почему?