使用fork时会打印多少个'A'和'B'

问题描述 投票:0回答:1
int main(int argc, char *argv[]) {

    if (fork() + fork() || fork() > 0) {
        printf("A\n");
        fork();
    }
    
    printf("B\n");
}

我知道子进程 fork 返回的进程 ID 是 0,而对于父进程,它返回新创建的子进程的进程 ID。

令我困惑的是 if 语句中的“fork() + fork()”。假设我们从一个父进程 P1 开始,“fork() + fork()”中的左分叉将为 P1 创建一个子进程 C1,但我不确定“fork() + fork()”中的右分叉是否正确会导致 P1 和 C1 各自创建一个子进程。

c fork
1个回答
0
投票

fork() + fork()
调用
fork
两次。每个
fork
都会复制它所在的进程。C 标准没有指定
+
左右操作数的排序;它们可以按任意顺序进行评估,但这在本程序中并不重要。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.