gpt4 book ai didi

c - 了解与 fork() 一起使用时的 stdout 输出

转载 作者:行者123 更新时间:2023-11-30 15:06:47 24 4
gpt4 key购买 nike

这是我的 C 程序:

int main() {
fork();
printf("one ");
fork();
printf("two ");
}

输出是:

one two one two one two one two

但是,如果我更改代码并添加 \n到打印语句:

int main() {
fork();
printf("one\n");
fork();
printf("two\n");
}

输出是:

one
one
two
two
two
two

或者有时(顺序可以改变):

one
two
one
two
two
two

为什么输出是8第一个程序中的单词和 6在第二个?

最佳答案

2 个进程执行第一个 printf(),然后 4 个进程执行第二个 printf(),因此应该有 6 个输出。

在第一个代码中,似乎在刷新缓冲区中的内容之前执行了fork(),然后缓冲区的内容被复制,然后出现了多余的输出。

在第二个代码中,似乎\n刷新了缓冲区,因此没有出现多余的输出。

关于c - 了解与 fork() 一起使用时的 stdout 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38805367/

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