2012-10-10 41 views
0

我正在寫一個時間關鍵的應用程序在C++中,我寫數據到一個不斷顯示和更新在Web瀏覽器中的日誌(我不能改變這一點,請不要推薦使用不同的解決方案)。保持一個潛在的文件句柄

目前,我做這樣的事情每100ms轉儲數據(整個文件必須重寫每個轉儲):

ofstream log_file(log_path); 
//Do some error handling 
log_file << "Quite some data" << endl; 
log_file.close(); 

的問題是,每隔幾個調用程序需要像〜20毫秒來打開日誌,它似乎會導致一些系統上的很多硬盤使用情況(我懷疑硬盤在每次重新打開過程中都會再次搜索該文件)。

是否有辦法讓文件句柄始終保持打開狀態,以便系統有希望保留一些指向文件的指針,以儘量減少延遲和硬盤使用情況?如果需要,我會很樂意切換到不同的寫入API。

回答

1

您可以將日誌文件保留在內存中的文件系統上,例如/dev/shm。這樣可以避免訪問磁盤,除非日誌文件太大而無法訪問。

+0

也許我應該說這是一個Windows應用程序。 – Listing

+0

@上場哦,夠公平的。 –

+0

那麼這個想法仍然很好,我環顧四周,找到了一種方法來做到這一點,所以這仍然回答我的問題。 – Listing