我在Linux和Cygwin(在Windows上)中都使用了这段代码,输出顺序不同,我不知道为什么..

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



int main()
{
        pid_t pid;

        /* fork a child process */
        pid = fork();

        printf("\n PID1 %d\n",pid);

        pid = fork();

        printf("\n PID2 %d\n",pid);

        return 0;
}

Windows中的输出为:
 PID1 3888

 PID1 0


 PID2 5564
 PID2 7772

 PID2 0

 PID2 0

但在Linux(和Mac)中,它看起来像
PID1 2486

 PID2 2487

 PID2 0

 PID1 0

 PID2 2488

 PID2 0

我的问题是pid2(pid2 2487)在linux中先于pid1,而不是在windows中(每次运行代码时输出行为都是相同的)

最佳答案

未指定进程在post fork中运行的顺序。

关于linux - Cygwin(在Windows中)和Linux中的Fork()不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28576870/

10-12 00:01