2009-10-26 30 views
5

我已經爲Linux編寫了一個C實用程序,它每秒檢查一次/ proc/net/dev的內容。我使用fopen(「/ proc/net/dev」,「r」)打開文件,然後在完成時打開fclose()。/proc僞文件的打開/關閉策略

因爲我使用'僞'文件而不是真正的文件,每次讀取文件時打開/關閉該文件,還是應該在應用程序啓動時打開它並保留它打開整個時間?該實用程序作爲守護進程啓動,因此可能會運行很長時間。

回答

3

它應該沒關係,不。但是,緩存/緩存可能存在問題,這意味着實際上最好(最安全)的做法是每次都重新打開文件。既然你很少這麼做,沒有這樣做就沒有表現,所以我會建議保留你現在的解決方案。

2

你想要的是無緩衝的閱讀。假設您不能切換到read()調用,請打開設備,然後將流設置爲非緩衝模式。這具有額外的優勢,即在完成後不需要關閉流。只需倒帶一下,然後重新開始閱讀。

FILE *f = fopen("/proc/net/dev", "r"); 
setvbuf(f, NULL, _IONBF, 0); 
while (running) 
{ 
    rewind(f); 
    ...do your reading... 
}