gpt4 book ai didi

C - fork 和 printf 行为

转载 作者:行者123 更新时间:2023-11-30 20:39:48 25 4
gpt4 key购买 nike

结合 printf 测试 fork 函数,我发现了一些奇怪的行为

例如代码:

int main(){
if(fork()==0){
printf("TestString");
}
}

不打印任何内容,而

int main(){
if(fork()==0) {
printf("TestString\n");
}
}

正确打印出 TestString。为什么打印新行会改变行为?我怀疑它可能会用 fflush() 做一些事情,但我不确定。我可以获得解释或可以阅读的链接吗?谢谢您提前的答复。

已编辑:我正在寻找的解释是实际刷新是什么以及为什么\n与刷新相同。

最佳答案

在 Linux 上(至少),stdout行缓冲。这意味着您写入的任何内容在遇到 '\n' 之前都不会实际显示在屏幕上。如果您不喜欢这种行为,您可以使用 setbuf() 更改缓冲策略,但是您必须在程序启动后立即执行此操作(实际上是在对流进行任何写入之前) ,或者如您所说,每当您想要刷新缓冲区内容时调用 fflush()

请记住,当程序结束并且其打开的流自动关闭时,缓冲区也会被刷新。

关于C - fork 和 printf 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26033294/

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