今天,我用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返回值是错误指示。

07-24 20:34