我試圖讀取使用標準的C函數在/ proc /模塊:如何讀取procfs文件?
FILE *pfile;
int sz;
pfile = fopen("/proc/modules", "r");
fseek(pfile, 0, SEEK_END);
sz = ftell(pfile);
rewind(ftell);
但我的問題是FTELL給我0值。所以我無法讀取文件的內容,因爲我有一個零長度。有另一種方法可以獲得我想要閱讀的文件的大小嗎?
非常感謝。
我試圖讀取使用標準的C函數在/ proc /模塊:如何讀取procfs文件?
FILE *pfile;
int sz;
pfile = fopen("/proc/modules", "r");
fseek(pfile, 0, SEEK_END);
sz = ftell(pfile);
rewind(ftell);
但我的問題是FTELL給我0值。所以我無法讀取文件的內容,因爲我有一個零長度。有另一種方法可以獲得我想要閱讀的文件的大小嗎?
非常感謝。
不,它沒有大小。但是,您可以讀取它的部分內容,直到達到文件結尾。
/proc文件是在讀取它們時動態創建的,因此它們不能有大小。
我站好了。有些/ proc文件的確有一個大小,正如adobriyan在對Sjoerd的回答評論中指出的那樣。 (?是的Linux內核成名阿列克謝Dobriyan)
至於如何使用龜etc讀取文件,這個工程:
int c;
while ((c = fgetc(pfile)) != EOF) {
printf("%c",c);
}
而且你的程序是因爲段錯誤你想FTELL後退。正確。
是否有任何可能的方法可以精確讀取procfs的動態數據。我做了Sjoerd建議的使用fgetc,但它給了我一個分段錯誤。 – domlao 2010-06-23 23:57:47
沒錯。/proc中的「文件」將始終返回大小= 0,但如果您繼續閱讀,則無論如何,您將獲得數據。 – eemz 2010-06-23 16:14:48
$ find/proc -type f -size +0 2>/dev/null /proc/config.gz ... – adobriyan 2010-06-23 20:30:14
當我使用fgetc查找EOF時,該應用程序給出了Segmentation Fault。 – domlao 2010-06-23 23:56:39