我有一個FileSystemWatcher對象設置來監視由控制檯應用程序編寫的日誌文件的更改。 通知程序過濾器設置爲: watcher.NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite | NotifyFilters.LastAccess;環境:操作系統:Win 2k8服務器。fflush標準輸出
轉儲到被重定向到文件out.log標準輸出的控制檯應用程序代碼:
空隙MYSET ::轉儲() { 的std :: COUT < <此< < ENDL; fflush(stdout); }
運行轉儲後(在調試器的直接窗口中),文件大小保持不變。 如果我運行「類型」命令更新似乎發生。 任何想法
C:\ TEMP>目錄 5/21/2010 11:11 4,159 out.log
轉儲後:(無變化)
C:\ TEMP>目錄 05 /二千○十分之二十一11:11 4,159 out.log
運行 「類型」 命令
C:\ TEMP>鍵入out.log 文件現在有新的大小... ç :\ temp>目錄 05/21/2010 11:11 AM 4,410 out.log
這是爲什麼?我在這裏錯過了什麼嗎?提前致謝。
感謝您的回覆。我試過fclose,但是這會關閉文件以便後續寫入 - 即,fclose不是一個選項。通知過濾器應該使用哪些其他標準(大小除外)? – user85917 2010-05-21 16:51:45
那麼,除了大小是什麼改變?它可能是唯一的選擇,雖然它不一定要更新,直到收盤。您可以通過打開和關閉閱讀句柄(這是哪種類型)來強制更新,但不能保證。 – 2010-05-21 17:07:22