2015-05-18 5 views
1

Я написал программу для анализа файлов журнала в реальном времени. Мне нужно передать его IP-адресам. Он отлично работает с командой:Труба непрерывного потока в другую команду

cat /var/log/apache2/access.log | awk '{print $1}' | ./my_program 

Кроме того, я могу получить IP-адреса в режиме реального времени с помощью команды:

tail -f /var/log/apache2/access.log | awk '{print $1}' 

Когда я труба это моя программа, моя программа ничего не получит:

tail -f /var/log/apache2/access.log | awk '{print $1}' | ./my_program 

Это похоже на буферизацию. Есть ли способ непрерывного потока трубопроводов в мою программу?

+1

Если буферизация делается 'awk' тогда вы могли бы сделать его линии в буфер. Вы можете попробовать 'tail -f /var/log/apache2/access.log | awk -W interactive '{print $ 1}' | ./my_program', чтобы увидеть, как это работает? –

ответ

0

Я нашел окончательное решение моей проблемы с буфером here.

Проблема заключается в том, что STDIO в буферизации, ...