非缓冲(1)和stdbuf(1)之间有什么区别吗?从我所收集到的信息来看,unbuffer在开始时调用libc函数集(X)buf所做的“最大努力”,然后让事情发生呢?
发布于 2013-10-23 20:26:02
他们的工作方式完全不同。
程序取消缓冲区使用expect运行命名命令。因为expect创建了一个伪tty来附加到子进程的stdout,所以子进程可能会被愚弄到认为它应该使用行缓冲而不是块缓冲。当isatty(stdout)是真的时,有些程序会改变他们的行为,而其他程序则不会,很难知道哪一种会和哪一种不会。
程序stdbuf试图将libstdbuf放在libc前面,以便动态加载二进制文件。其中,libstdbuf重新定义libc stdio调用的默认缓冲策略。
我是在
apt-get source expect coreutils并阅读每个程序的相关源代码。
https://unix.stackexchange.com/questions/97294
复制相似问题