我有一個應用程序讀取一組數據文件並執行一些模型計算。該計劃並不需要修改數據文件本身,所以我目前正在與只讀標誌打開它們,如下圖所示:我可以允許多個程序同時讀取同一個文件嗎?
我想在同一運行我的程序的多個實例時間,使用相同的一組數據,但對數據執行不同的計算。我的程序都不需要修改數據文件。由於數據文件非常大,我無法爲每個程序使用單獨的數據副本。
我認爲,因爲我打開具有隻讀權限的文件,兩個程序可能同時讀取同一個文件。相反,我遇到了各種各樣的錯誤,「文件無法打開,因爲它正在被另一個進程使用」。
由於我的開發環境是Windows 7,this question suggests it might be a matter of enabling read sharing。然而,該線程中的所有答案依賴於CreateFile,而我正在處理用stdio.h編寫的遺留代碼。
有沒有一種方法可以使用fopen類的函數同時從文件中讀取多個程序?
我認爲除了使用CreateFile()之外別無他法。問題是如何從句柄中獲得FILE *。 – Paranaix 2012-07-19 18:23:47
你也可以使用std :: ifstream ..畢竟這是標記爲C++? – stijn 2012-07-19 18:25:56
@Paranaix:'_open_osfhandle',然後是'_fdopen'。 – MSalters 2012-07-19 18:39:45