我已經能夠編寫一個程序,可以讀取任何文本文件...除了在/ 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中的文件不像普通文件那樣行爲,而是作爲管道,它們應該顯示爲fifos或stat可檢測到的其他特殊文件類型,而不是破壞普通文件的語義... –