2012-12-14 70 views
0

程序在Windows機器上創建一個文件來記錄它的進度。在程序結束時,文件關閉並保留在系統中。具有網絡訪問權限的用戶想要遠程打開文件以查看最近記錄的條目。fopen_s很容易重構成CreateFile

該文件使用fopen_s打開,文檔中沒有提及共享模式。使用Ansi-C90是一項要求。

所使用的電話是這樣的:

e += fopen_s(&(logger->logData.fileHandle), fp.Path, "a"); 

的CreateFile是我的選擇?我讀到它不是Ansi-C90。
是否fopen_s易於重構爲CreateFile而不破壞任何其他的代碼?
針對我應該寫什麼樣的可能的重構問題來測試unittests?
是否有其他方法來打開我缺少的sharedmode中的文件?

+2

「文件由fopen_s開_wfopen_s不共享。如果你需要一個文件可以共享,使用_fsopen,用適當的共享模式不變_wfsopen(例如,_SH_DENYNO用於讀/寫共享)。「 – loreb

+0

工作就像一個魅力。 – Johannes

+0

@loreb可以讓你的評論成爲答案,所以我可以接受它?謝謝 :) – Johannes

回答

1

「由fopen_s和_wfopen_s打開的文件是不可共享的。如果您需要可共享文件,請使用具有適當共享模式常量的_fsopen,_wfsopen(例如,用於讀/寫共享的_SH_DENYNO)。」

(註釋變成每約翰內斯請求應答)