模拟PTY并输出行刷新的流

时间:2013-04-14 20:49:29

标签: linux shell unix output-buffering tty

我正在寻找一种方法来欺骗Linux程序,使其认为它已连接到TTY,因此输出是行缓冲而不是块缓冲。

当我直接在终端仿真器内调用程序时,它的行为是正确的,但如果我将其输出管道输出到while read line; do ...; donecat则不行。

基本上我想结束这样的事情:

exec "${some_strange_wrapper}" "${some_program}" | while read line;
do
    # Do something...
done

1 个答案:

答案 0 :(得分:2)

在我的问题中考虑更多的事情时,我找到了答案!

使用socat!它是一个外部程序,可以在不同类型的文件描述之间建立许多不同类型的连接。

但是,在这种情况下,它可以像这样使用:

socat EXEC:"${some_program}",pty stdout

感谢所有人,检查这个问题是否需要回答! (虽然在这种情况下不再需要......): - )