2013-05-16 39 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