2010-08-18 28 views
0

Iam工作在C++ .i有一個問題,而運行一個應用程序,其中有我的dll,我的dll代碼適用於應用程序(需要進程).i寫了一個日誌文件xml文件)在整個應用程序中使用fopen內的所有功能(DLL源),在這裏我收到異常,如「無法訪問該文件,由於使用另一個進程」。 。請幫助我,如何管理一個文件,一次只能使用一個進程...文件打開問題,在C中的很多進程

+0

你是否經常使用fopen或者你打開文件到一個對象並更新對象?我習慣看到一個日誌文件類(大部分時間是在內部創建的),並且該對象在應用程序的開始處打開並在整個過程中重用。這樣,日誌文件在應用程序打開時打開。如果您希望能夠在應用程序打開時讀取文件,請確保在每次寫入後清空緩衝區。 – XstreamINsanity 2010-08-18 11:59:00

+0

@XstreamINsanity,我想在整個應用程序end.i使用該文件在每個Fn mydll(這是由應用程序導入)中使用fopen fn,所以無論此dll調用發生,該時間文件打開舉行,在 - 最後在FN結束我關閉文件指針... – Raja 2010-08-18 12:11:57

+0

我的dll有一些函數與fopen FN來獲取我的所有用戶定義的DLL的參數列表..該DLL和我的日誌文件是可用的整個應用程序,現在主要進程,使用日誌文件的過程,那時第二個進程不能訪問同一個文件...有沒有什麼辦法可以在本地代碼中繼續文件進程同步.. – Raja 2010-08-18 12:18:24

回答

2

除非你使用你的DLL的每個進程使用不同的文件,那麼問題是你有潛力爲嘗試訪問相同的資源的多個進程。

你應該做下列之一:所以它使用每個調用
過程
單獨的文件

  1. 更改代碼。
  2. 更改它,以便它使用
    的旗語,互斥或critcial
    部分和等待狀態控制 訪問文件。
  3. 或重寫您的DLL,使其運行 作爲一個進程在其自己的權利和 直接控制傳遞給它的數據 放置到文件中。
+0

Quote:「如何管理文件,這是使用「 – 2010-08-18 12:38:21

+0

@ChrisBD,我認爲第二點適合我,如果信號量,互斥量可以通過c,C++,給出一些參考,它的讚賞,另外兩點會給我一些困難..我感覺如此。謝謝爲您的寶貴信息... – Raja 2010-08-18 12:41:41

+0

@Hans Passant,我不熟悉英文,不要誤會我... – Raja 2010-08-18 12:46:16