我正在寻找一种方法来欺骗Linux程序,使其认为它已连接到TTY,因此输出是行缓冲而不是块缓冲。
当我直接在终端仿真器内调用程序时,它的行为是正确的,但如果我将其输出管道输出到while read line; do ...; done
或cat
则不行。
基本上我想结束这样的事情:
exec "${some_strange_wrapper}" "${some_program}" | while read line;
do
# Do something...
done
答案 0 :(得分:2)
在我的问题中考虑更多的事情时,我找到了答案!
使用socat
!它是一个外部程序,可以在不同类型的文件描述之间建立许多不同类型的连接。
但是,在这种情况下,它可以像这样使用:
socat EXEC:"${some_program}",pty stdout
感谢所有人,检查这个问题是否需要回答! (虽然在这种情况下不再需要......): - )