LINUX.ORG.RU

файловый вывод


0

0

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

как определить что файл удалён?


Наверное, просто ловить его удаление. polling (access время от времени) или какой-нибудь разумный механизм типа dnotify. Если нужно различать удаление файла и перемешение/переименование, то можно делать dnotify+проверку /proc/self/fd/... на указывание в разумное место.

Возможностей много. Надо только понять, что именно нужно.

Murr ★★
()

>как определить что файл удалён?

А он не удален. Всего лишь исчезла ссылка из некоторого каталога.

Я вижу три пути.

1. Честно пытаться анализировать факт удаления. За подробностями примерно сюда http://www.rsdn.ru/Forum/?mid=1146761

2. Убеждаться в наличии файла (точнее, имени в каталоге). man 2 stat

3. Устроить redesign. Наиболее вероятный путь - при удалении лога потылать программе сигнал, реагируя на который файл будет переоткрываться.

anonymous
()

наиболее правильный вариает использовать

closelog, openlog, syslog для работы с логами.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.