我正在寻找一种方法来欺骗 Linux 程序,使其认为它已连接到 TTY,以便输出是行缓冲而不是 block 缓冲。
当我直接在终端模拟器内调用该程序时,它的行为正确,但如果我将其输出通过管道传输到 while read line; do ...; done
或cat
事实并非如此。
基本上我希望得到这样的结果:
exec "${some_strange_wrapper}" "${some_program}" | while read line;
do
# Do something...
done
最佳答案
在考虑在问题中写更多内容时,我找到了答案!
使用socat
!它是一个外部程序,可以在不同类型的文件描述之间建立许多不同类型的连接。
但是在这种情况下,可以这样使用:
socat EXEC:"${some_program}",pty stdout
感谢大家,检查这个问题是否需要回答! (尽管在这种情况下不再需要......):-)
关于linux - 模拟 PTY 并输出行刷新流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004183/