我試圖從其主線程中的進程外COM服務器運行以下代碼段,但是沒有創建任何文件。Out of Process COM服務器 - 無法創建文件
我想知道是否有人能告訴我爲什麼這是?
FILE *f = fopen("Log.txt", "w");
fputs("Tony", f);
fputs("\n", f);
fclose(f);
我試圖從其主線程中的進程外COM服務器運行以下代碼段,但是沒有創建任何文件。Out of Process COM服務器 - 無法創建文件
我想知道是否有人能告訴我爲什麼這是?
FILE *f = fopen("Log.txt", "w");
fputs("Tony", f);
fputs("\n", f);
fclose(f);
我認爲最可能的原因是fopen失敗,出現拒絕訪問錯誤。你有沒有嘗試單步執行代碼?診斷此問題的最佳方法是附加一個調試器並檢查errno的值。
從權限問題來看,文件實際上已經創建但是你找不到它的機率相當不錯。您沒有給出文件的完整路徑名稱(如"c:\\blah\\log.txt"
),這意味着它將在COM客戶端應用程序的當前工作目錄中創建。這是保證是而不是您的COM服務器所在的目錄。
您需要指定完整路徑。在Windows中,這應該是您保證寫入權限的目錄。使用SHGetFolderPath()獲取appdata文件夾的路徑。或者爲日誌記錄留出一個固定的目錄名稱(不推薦)。
如何處理proc中的錯誤?有沒有簡單的方法? – 2010-07-13 15:35:52
@Tony - 使用「調試 - >附加到進程」。選擇您的服務器進程作爲目標。 – atzz 2010-07-13 15:42:00