Irgendeine Idee, warum mein C-Code nicht von / proc lesen kann?

8

Ich konnte ein Programm schreiben, das beliebige Textdateien lesen kann ... außer den in / proc gefundenen. Jede Datei, die ich versuche, aus / proc zu lesen, erscheint leer.

Aber immer wenn ich

tippe %Vor%

am Terminal, ich bin mit meinen CPU-Informationen vorgestellt.

Ich kann die Datei auch sehen, wenn ich sie mit einem Texteditor öffne, zB gedit oder leafpad.

So scheint es, dass / proc-Dateien tatsächlich Textdateien sind, aber mein C-Programm hat es schwer, sie zu lesen.

%Vor%

Irgendeine Idee warum?

    
Salehen Rahman 24.01.2012, 18:56
quelle

3 Antworten

13

Die Dateien von /proc haben eine Größe von 0 Byte, weil sie im Kernel vom Kernel generiert werden.

Hier finden Sie weitere Informationen zum proc-Dateisystem:

Ссылка

    
ouah 24.01.2012, 18:59
quelle
6

Die meisten /proc/ Textdateien sollen sequentiell durch eine klassische Schleife wie

gelesen werden %Vor%

suchen arbeiten nicht an ihnen. Ein bisschen wie für Rohre.

    
Basile Starynkevitch 24.01.2012 19:31
quelle
1

Wenn Sie die Größe einer Datei wissen möchten, ist stat (2) der richtige Weg. Aber für das, was Sie tun, entweder einen sehr großen Puffer zuweisen (RAM ist billig, und dies ist ein One-Shot-Programm) Sie fread () in nachdem Sie fopen (), oder erfahren Sie mehr über realloc (3) und verwenden Sie das in Ihre Datei-Leseschleife. Wie gesagt, die Dateien in / proc sind speziell.

calloc () ist für die allgemeine Verwendung und insbesondere für Zeichenfolgen eine Verschwendung von CPU-Zyklen, da das Setzen des 0. Zeichens des zurückgegebenen Zuordnungsbereichs auf '\ 0' ausreicht, um es unabhängig von einer leeren Zeichenfolge zu machen die Daten nach diesem ersten Byte.

    
Andrew Beals 24.01.2012 19:13
quelle

Tags und Links