Eu tenho uma janela xterm que gostaria de exibir continuamente a saída de um pipe nomeado. No entanto, parece haver algum buffer ocorrendo, e não consigo encontrar o que está acontecendo.
Eu abro dois terminais. No primeiro, eu faço um cachimbo e presto atenção a qualquer coisa enviada para ele.
mkfifo pipe
tail -f pipe
No segundo terminal, envio duas mensagens pelo pipe, a partir de um único processo, separadas por algum tempo. Eu uso stdbuf
para garantir que a saída do comando não tenha buffer.
stdbuf -o0 bash -c 'echo hi; sleep 5; echo bye' > pipe
Isso funciona como esperado, com o primeiro terminal imprimindo hi
e, em seguida, imprimindo bye
cinco segundos depois.
No entanto, se eu executar o tail -f pipe
dentro de uma janela xterm, as mensagens não aparecerão até que o programa saia. Claramente, há algum buffer sendo feito, mas não consigo encontrar onde está. Existe uma maneira de evitar que o xterm armazene em buffer a saída de programas?
Meu "terminal normal" usa o PuTTY, ssh-ed do Windows 7 para a máquina Linux. Na máquina Linux, uname -a
retorna Linux hostname 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u1 x86_64 GNU/Linux
e xterm -v
retorna XTerm(278)
.