gpt4 book ai didi

for循环中fork后的进程计数

转载 作者:可可西里 更新时间:2023-11-01 11:43:37 25 4
gpt4 key购买 nike

我有以下代码:

for(i=1; i<=2; i++)
{
fork();
printf("x ");
}

我计算出 x 应该打印 6 次:第一次迭代两次,第二次迭代 4 次。

相反,X 被打印了 8 次。为什么?

最佳答案

因为缓冲。通常,stdout 是行缓冲的,所以

printf("x ");

不会立即将 "x " 写入终端,而是写入输出缓冲区。这是在进程 fork() 时复制的,因此第二次迭代后的四个进程中的每一个在输出缓冲区中都有两个 "x " [一个来自父/在第一次迭代中 fork 之前,第二次迭代中的一个] 当它退出时,总共打印了八个 x

printf("x "); 之后立即刷新缓冲区,并且只会打印六个。

关于for循环中fork后的进程计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16635658/

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