2013-05-16 6 views
0

Я не уверен, что это даже действительный вопрос. Я не мастер понимания системы. Одна из моих программ записывает журналы в текстовый файл. Другая программа электронной почты работает в планировщике и электронной почте и архивирует файл журнала, если он найден в папке. Мой вопрос: если в любой момент, если первая программа записывает информацию в файл, и в то же время планировщик электронной почты запускает то, что произойдет? Удастся ли почтовой программе отправлять почту и архивировать ее? Если да, будет ли предыдущая программа записывать сбой файла? Как справиться с этим сценарием без сбоев в программах?файл перемещен при записи системной записи в файл C++

+1

Вам необходимо синхронизировать программы. Проверьте проблему производителя производителя http://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem – bjskishore123

+2

Это полностью зависит от вашей ОС и способа открытия файла (например, для блокировки и т. Д.) – PlasmaHH

+0

Используйте 'fcntl() 'и заблокировать файл и отпустить, когда цель будет выполнена. например, при записи и выпуске при записи. – bikram990

ответ

0

Независимо от того, ваши настройки приведут к возникновению каких-либо проблем.

Я думаю, что самым простым решением было бы иметь программу, которая записывает файл журнала, сделав это, например. 5 минут до Emailer/архиватор планируется запустить:

  • начать новый файл для регистрации
  • копию или переименовать старый файл в файл, который использует Emailer/архиватор.
+0

Что делать, если программа регистрации является программой, основанной на реальном времени? – user2388323

+0

Какая проблема, по вашему мнению, может произойти? –

+0

@ user2388323: Особенно, если это программа реального времени, важно, чтобы программа архивирования не мешала ей. Вы можете записать программу ведения журнала, чтобы она меняла файлы в определенное время. Таким образом, файл, который записывается, никогда не совпадает с архивом. – Mikkel

Смежные вопросы