if(fork) 和 if(!fork) - 它们是如何工作的?

问题描述 投票:0回答:1

假设我们有以下内容:

pid_t pid;
pid = fork();
if(pid == 0) {
        if(fork()) printf("A");
        else printf("B");
        printf("C");
}
else {
        if(!fork()) printf("A");
        else if (fork()) printf("B");
        else printf("C");
}
    

要打印多少个 A、B 和 C?

我对 fork() 在“if”中如何工作以及我是否处于父进程或子进程中有点困惑。

c unix operating-system fork pid
1个回答
0
投票

叉子返回:

  • 0 表示子进程
  • 父进程的另一个 PID

所以,当你调用fork时,你可以说

pid_t pid = fork();
if (pid == -1) {
    // Il y a une erreur
    perror("fork");
    return EXIT_FAILURE;
} else if (pid == 0) {
    // We are in the child

} else {
    // We are in the father

}
© www.soinside.com 2019 - 2024. All rights reserved.