我已經爲Linux編寫了一個C實用程序,它每秒檢查一次/ proc/net/dev的內容。我使用fopen(「/ proc/net/dev」,「r」)打開文件,然後在完成時打開fclose()。/proc僞文件的打開/關閉策略
因爲我使用'僞'文件而不是真正的文件,每次讀取文件時打開/關閉該文件,還是應該在應用程序啓動時打開它並保留它打開整個時間?該實用程序作爲守護進程啓動,因此可能會運行很長時間。
我已經爲Linux編寫了一個C實用程序,它每秒檢查一次/ proc/net/dev的內容。我使用fopen(「/ proc/net/dev」,「r」)打開文件,然後在完成時打開fclose()。/proc僞文件的打開/關閉策略
因爲我使用'僞'文件而不是真正的文件,每次讀取文件時打開/關閉該文件,還是應該在應用程序啓動時打開它並保留它打開整個時間?該實用程序作爲守護進程啓動,因此可能會運行很長時間。
它應該沒關係,不。但是,緩存/緩存可能存在問題,這意味着實際上最好(最安全)的做法是每次都重新打開文件。既然你很少這麼做,沒有這樣做就沒有表現,所以我會建議保留你現在的解決方案。
你想要的是無緩衝的閱讀。假設您不能切換到read()調用,請打開設備,然後將流設置爲非緩衝模式。這具有額外的優勢,即在完成後不需要關閉流。只需倒帶一下,然後重新開始閱讀。
FILE *f = fopen("/proc/net/dev", "r");
setvbuf(f, NULL, _IONBF, 0);
while (running)
{
rewind(f);
...do your reading...
}