unbuffer(1)和stdbuf(1)之间有区别吗?据我所知,unbuffer不仅仅是“尽最大的努力”,即在一开始就调用libc函数set(X)buf,然后让事情变得顺畅吗?
它们以完全不同的方式工作。
程序unbuffer使用expect运行命名命令。因为Expect会创建一个伪tty附加到子进程的stdout上,所以可能会欺骗该子进程以为它应该使用行缓冲而不是块缓冲。当isatty(stdout)为true时,某些程序会更改其行为,而其他程序则不会,并且很难知道哪个会和哪个不会。
程序stdbuf尝试将libstdbuf放在libc的前面,以动态加载二进制文件。其中,libstdbuf重新定义了libc stdio调用的默认缓冲策略。
我发现这个
apt-get source expect coreutils
并阅读每个程序的相关资源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句