2

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

当我直接在终端仿真器内调用程序时,它的行为是正确的,但是如果我将它的输出通过管道传输到while read line; do ...; done或者cat它没有。

基本上我想得到这样的结果:

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

1 回答 1

3

在考虑在我的问题中写更多的东西时,我找到了答案!

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

然而,在这种情况下,它可以像这样使用:

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

感谢大家,检查这个问题是否需要回答!(尽管在这种情况下不再需要......):-)

于 2013-04-14T20:49:29.290 回答