У меня есть окно xterm, которое я хотел бы постоянно отображать вывод именованного канала. Однако, похоже, что происходит некоторая буферизация, и я не могу найти, где это происходит.
Я открываю два терминала. Во-первых, я делаю трубу и слежу за всем, что ей отправляют.
mkfifo pipe
tail -f pipe
На втором терминале я отправляю два сообщения через канал, от одного процесса, через некоторое время. Я использую stdbuf
чтобы убедиться, что вывод команды небуферизован.
stdbuf -o0 bash -c 'echo hi; sleep 5; echo bye' > pipe
Это работает, как и ожидалось, с первым терминалом, печатающим hi
, затем печатая bye
пять секунд спустя.
Однако, если я запускаю tail -f pipe
в окне xterm, сообщения не появляются, пока программа не завершится. Ясно, что делается некоторая буферизация, но я не могу найти, где она находится. Есть ли способ предотвратить буферизацию вывода программ xterm?
Мой "обычный терминал" использует PuTTY, ssh-ed с Windows 7 на Linux-машину. На машине Linux uname -a
возвращает Linux hostname 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u1 x86_64 GNU/Linux
, а xterm -v
возвращает XTerm(278)
.