【发布时间】:2017-02-14 10:30:53
【问题描述】:
我是 Linux 新手,我正在尝试掌握管道和缓冲区的工作原理。 我读到,如果我们在终端中输入以下内容:
command1 | command2
当缓冲区包含 4K 数据时,缓冲区将被刷新到标准输出。 来自stackoverflow的另一篇文章 How to make output of any shell command unbuffered?
我发现可以使用伪终端“关闭”缓冲区或将缓冲区策略更改为行缓冲。在这种情况下,伪终端实际上是如何工作的?为什么可以使用伪终端来改变缓冲策略?
谢谢!
【问题讨论】:
-
你在说什么“缓冲区”?标准 C
stdout缓冲区,例如由printf并且默认行缓冲?管道本身使用的低级缓冲区?其他一些内核级缓冲区?