gpt4 book ai didi

c - 将输出通过管道传递给 cat

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:11 26 4
gpt4 key购买 nike

我编写了以下程序:

int main() 
{
printf("one\n");
write(1, "two\n", 4);
return 0;
}

然后我给出命令./a.out |猫在输出成为的终端二一代替一二为什么???

最佳答案

那是因为 printf 的输出会被 libc 缓冲,write 的输出不会被缓冲。这是对文件 (stdout)

直接、无缓冲操作

阅读this :

if stdout is a terminal then buffering is automatically set to line buffered, else it is set to buffered

所以,您实际上是通过管道传输到 cat - 这就是启用缓冲的原因(尝试不使用 cat 来查看)

要关闭缓冲,请执行 stdbuf 命令:

stdbuf -o0 ./a.out  | cat 

顺便说一句,对于不是每天都在使用 C 语言的黑客来说,这是一个非常好的问题!简单明了!

关于c - 将输出通过管道传递给 cat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16258019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com