私は、/ procにあるテキストファイル以外のテキストファイルを読むことができるプログラムを書くことができました。/procから読み込もうとしたファイルは空になります。私のCコードが/ 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はこの意味でちょうど壊れています。/proc内のファイルが通常のファイルとして動作するのではなくパイプとして動作する場合、通常のファイルセマンティクスを破るのではなく、fifoやstatによって検出可能なその他の特殊ファイルタイプとして表示されるはずです... –