Вы могли заменить выходной файл FIFO и заставить Вашу другую программу получить свой вход от него.
Например:
mkfifo Epson4880_audit.txt
# launch your program
grep "." Epson4880_audit.txt
Обратите внимание, что это, как гарантируют, не будет работать. Некоторая программа проверяет, что их вывод является реальным файлом. И если Вы действительно хотите сохранить журнал строк, второй процесс должен удостовериться, что распечатал их, когда они прибывают. Например, выполнение tee real_Epson4880_audit.txt | grep "."
. Также обратите внимание, что Вы не сможете запустить свою первую программу без второго, потому что первый процесс будет вынужден ожидать читателя. В случае Вы хотите запустить первую программу без второго, необходимо будет удалить FIFO сначала.
Большинство операционных систем имеет средство, где можно подписаться на действие по файлу. В Linux это средство встраивают в ядро и называют iNotify. Вы могли создать что-то вдоль тех строк, чтобы наблюдать файл за действием и затем обработать эти обновления.
Вот некоторые ресурсы для запущения Вас с понимания iNotify:
Даже при том, что эти страницы показывают код C/C++, Вы не должны разрабатывать свои собственные инструменты для взаимодействия с ним. Существуют инструменты командной строки, которые можно использовать, чтобы подписать файл и/или каталог и затем получить уведомления.
Примечание: На OSX Вы будете использовать что-то названное подобное kqueue
. Я нашел этот поток, который обсуждает много опций на Переполнении стека, названном: существует ли команда как “часы” или “inotifywait” на Mac?.
Существуют инструменты, которые предлагают подобные средства inotifywait
на OSX такой как launchd
, kqwait
, fswatch
или watchdog
.
Другой подход, который Вы могли проявить с этим, должен посмотреть на то, как контроль инструментов, таких как Nagios контролирует файлы журнала для действия. Существует богатство плагинов к Nagios, которые делают точно, что Вы пытаетесь сделать. Некоторые из них контролируют файл только для действия, в то время как другие контролируют файлы для определенных строк. Смотрите на страницу плагинов.
fswatch
потому что это кажется более простым, и меньше работы (в некотором отношении) для реализации. – orionrush 22.06.2013, 16:52