2011-06-20 127 views
2

我正在嘗試使用popen訪問/proc/net/dev文件,其中-r--r--r-- 1 root root 0權限。該代碼是儘可能公平:權限在C(linux)中使用popen時出現問題

main(){ 
FILE *f; 
f=popen("/proc/net/dev","r"); 
pclose(f);} 

登錄爲根,編譯&運行該程序後,我得到這個:

SH:的/ proc /淨的/ dev:權限被拒絕。

你能幫我解決這個問題嗎? 謝謝

回答

1

popen()用於打開管道到另一個進程,所提供的路徑必須是可執行文件,而不是設備條目。您可能需要open()fopen()

3

我認爲你看着這個錯誤的方式,popen是從應用程序打開管道。 /proc/net/dev不是應用程序,而是文件。試着看看fopen。

f=fopen("/proc/net/dev", "r"); 
fclose(f); 
+0

作爲一個側面說明;你得到的權限被拒絕了,因爲popen試圖執行沒有執行權限的/ proc/net/dev(它不應該這樣做)。 – Suroot

0

use read;欲瞭解更多信息,請在終端上閱讀

+0

閱讀需要一個現有的打開文件描述符。 – Suroot

+0

後來編輯:對不起,這是上午6點,我有點困了:)他試圖打開,而不是閱讀。我明白。 – Adi