gpt4 book ai didi

c - 输出将如何打印?

转载 作者:行者123 更新时间:2023-12-02 09:38:30 27 4
gpt4 key购买 nike

我正在对这段代码进行一些跟踪,并以打印 4 条语句结束,2 条用于 parent ,2 条用于 child ,但我想知道订单如何?我知道这取决于 CPU,它可能因一台计算机而异,但可能的解决方案是什么?因为我想到了这些语句可能会出现 6 种不同的顺序。

#include <stdio.h>
#include <sys/types.h> #include <unistd.h>

void forkExample()
{
int z = 8;

if (fork() == 0)
{
fork();
printf("Child with z = %d\n", ++z);
}
else
{
fork();
printf("Parent with z = %d\n", --z);
}
}

int main()
{
forkExample(); return 0;
}

最佳答案

printf 之间没有排序。调用——代码中的任何内容都不会导致任何进程中的任何一个在任何其他进程之前或之后。因此,任何 4! = 24 个订单是可能的。

(这假设每个输出都在另一个输出开始之前完全打印。C 或 Posix/Unix 不能保证这一点,但可能是使用默认缓冲区设置的短文本。)

虽然可以对实际调用进行 24 次排序,但有些消息无法区分,因为它们打印相同的文本。有两对相同的消息,所以可区分结果的数量是 24/2!/2! = 6。

关于c - 输出将如何打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60413703/

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