我在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/