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?
Die meisten /proc/
Textdateien sollen sequentiell durch eine klassische Schleife wie
suchen arbeiten nicht an ihnen. Ein bisschen wie für Rohre.
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.