gpt4 book ai didi

c - 等待无法同步三个进程

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:19 26 4
gpt4 key购买 nike

我是一名新的 C 开发人员。我正在尝试同步三个进程以使用此代码打印 [FATHER][SON][GRANDSON][FATHER][SON][GRANDSON]:

int main(int argc, char **argv)
{

int c = 0;
while (c<2)
{
c++;
printf("[FATHER]");
pid_t son = fork();
if (son == 0)
{
printf("[SON]");
pid_t grandson = fork();
if (grandson == 0)
{
printf("[GRANDSON]");
return 0;
}
wait(NULL);
return 0;
}
wait(NULL);
};

}

相反,我得到这个输出:[父亲][儿子][孙子][父亲][儿子][父亲][父亲][儿子][孙子][父亲][父亲][儿子][父亲][父亲]

我在使用等待代码时是否误解或遗漏了什么?非常非常感谢。

最佳答案

与其在每次调用 printf 之后调用 fflush,不如使用 write 系统调用打印到 stdout(如有必要,首先使用 sprintf 格式化输出字符串)。 write 系统调用进行无缓冲写入,这样您就不必每次都记住调用 fflush

您甚至可以使用可变参数宏来避免总是编写 sprintf 行后跟 write 行。

关于c - 等待无法同步三个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7382398/

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