2013-05-16 21 views
0

我不確定這是否是一個有效的問題。我不是理解系統工作的高手。我的一個程序將日誌寫入文本文件。另一個電子郵件程序在計劃程序和電子郵件上運行,並在文件夾中找到日誌文件。 我的問題是,如果在任何時候如果第一個程序正在將信息寫入文件中,並且同時電子郵件調度程序運行會發生什麼?電子郵件程序是否可以將文件郵寄並存檔?如果是,那麼較早的程序將寫入文件崩潰?如何處理這種情況而不會崩潰任何程序?當系統在文件C++編寫信息時移動文件

+1

您需要同步程序。檢查生產者消費者問題 http://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem – bjskishore123

+2

這完全取決於您的操作系統和打開文件的方式(例如鎖定等) – PlasmaHH

+0

使用'fcntl()鎖定文件並在目標達到時釋放。如寫入時鎖定和寫入時釋放。 – bikram990

回答

0

無論如何,你的設置會導致一些麻煩。

我認爲最簡單的解決方案是讓寫入日誌文件的程序執行此操作,例如前5分鐘的emailer /歸檔計劃運行:

  • 開始一個新的文件用於記錄
  • 複製或重命名舊文件到郵件器/歸檔使用文件。
+0

如果日誌記錄程序是基於實時事件的程序,該怎麼辦? – user2388323

+0

你認爲會發生什麼樣的麻煩? –

+0

@ user2388323:特別是如果它是實時程序,重要的是它不會受到歸檔程序的干擾。您可以編寫日誌程序,以便在特定時間切換文件。這樣,正在寫入的文件與正在歸檔的文件永遠不會相同。 – Mikkel