Как прочитать файл procfs? - PullRequest
2 голосов
/ 23 июня 2010

Я пытался прочитать / proc / modules, используя стандартные функции c:

FILE *pfile;
int sz;
pfile = fopen( "/proc/modules", "r" );
fseek( pfile, 0, SEEK_END );
sz = ftell( pfile );
rewind( ftell );

Но моя проблема в том, что все равно дайте мне значение 0. Поэтому я не могу прочитать содержимое файла, так как у меня нулевая длина. Есть ли другой способ получить размер файла, который я хочу прочитать?

Большое спасибо.

Ответы [ 2 ]

6 голосов
/ 23 июня 2010

Нет, он не имеет размера. Однако вы можете читать его части, пока не достигнете конца файла.

3 голосов
/ 23 июня 2010

/ proc файлы создаются динамически, когда вы их читаете, поэтому они не могут иметь размер.

Я стою исправлено. Некоторые файлы / proc действительно имеют размер, как отметил adobriyan в комментарии к ответу Sjoerd. (Это Алексей Добрян из Linux Kernel Fame?)

Что касается того, как читать файл с помощью fgetc, это работает:

int c;
while ( (c = fgetc(pfile)) != EOF) {
    printf("%c",c);
}

И ваша программа работает с ошибками, потому что вы пытаетесь перемотать ftell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...