今天,我用C++编写了一个小程序,如下所示:
pid_t pChild=0;
printf("Main process ID:%d\n",getpid());
pChild= fork();
printf("%d\n",pChild);
if (pChild!=0){
printf("Parent process ID:%d\n",getpid());
printf("Child process ID:%d\n",pChild);
}
else printf("Sorry! The child can not be created\n");
return 0;
输出是这样的然后,我想知道输出。
我猜想子进程的第一个getpid()没有运行,因为它从其父进程读取了与getpid()相同的数据。和这个味精
它必须来自子进程的if语句。如果我错了请纠正我...
但是我仍然不明白为什么 child 的fork()函数没有运行。为什么它被阻止了?是否因为它们读取相同的pChild数据(子进程中的fork()之一,而另一个是主进程的if语句)?
谁能解释更多细节?谢谢。
最佳答案
从 fork()
documentation:
您的代码假定任何零返回值都是错误。
继续:
-1
返回值是错误指示。