首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“`unbuffer`”或“stdout”用于移除stdout缓冲区?

“`unbuffer`”或“stdout”用于移除stdout缓冲区?
EN

Unix & Linux用户
提问于 2013-10-23 17:25:29
回答 1查看 6.8K关注 0票数 17

非缓冲(1)和stdbuf(1)之间有什么区别吗?从我所收集到的信息来看,unbuffer在开始时调用libc函数集(X)buf所做的“最大努力”,然后让事情发生呢?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2013-10-23 20:26:02

他们的工作方式完全不同。

程序取消缓冲区使用expect运行命名命令。因为expect创建了一个伪tty来附加到子进程的stdout,所以子进程可能会被愚弄到认为它应该使用行缓冲而不是块缓冲。当isatty(stdout)是真的时,有些程序会改变他们的行为,而其他程序则不会,很难知道哪一种会和哪一种不会。

程序stdbuf试图将libstdbuf放在libc前面,以便动态加载二进制文件。其中,libstdbuf重新定义libc stdio调用的默认缓冲策略。

我是在

代码语言:javascript
复制
 apt-get source expect coreutils

并阅读每个程序的相关源代码。

票数 21
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/97294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档