linux - 模拟 PTY 并输出行刷新流

标签 linux shell unix output-buffering tty

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

当我直接在终端模拟器内调用该程序时,它的行为正确,但如果我将其输出通过管道传输到 while read line; do ...; donecat事实并非如此。

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

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/

相关文章:

shell - 如何从文件名中删除年份和月份

sql - 将 CSV 导入 Sqlite 时省略列

linux - 如何从 cygwin 中使用自定义 glibc 为 suse enterprise linux 编译 php-cgi 二进制文件?

linux - 将命令参数中的单引号转义为 sh -c

linux - 拆分 tar.bz2 文件并分别提取每个文件

mysql - 在所有远程服务器上运行 mysql 命令的脚本

bash - 将 4 个文件合并为 1 个具有不同列的文件

linux - 无法使用 HAProxy 将客户端 IP 转发到服务器

shell - Picocli:如何在父命令和子命令之间共享选项

c++ - APUE 第 7 章中的 hello world 以代码 0 退出