【发布时间】:2017-01-23 18:37:46
【问题描述】:
今天,我用 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;
输出是这样的
主进程ID:3140
对不起!无法创建孩子
父进程 ID:3140
子进程 ID:3141
然后,我想知道输出。
我猜想子进程的第一个 getpid() 没有运行,因为它使用 getpid() 从其父进程读取相同的数据;还有这个味精
对不起!无法创建孩子
它必须来自子进程的if语句。如果我错了,请纠正我...
但是我还是不明白为什么孩子的 fork() 函数没有运行。为什么被屏蔽了?是不是因为他们读取了相同的 pChild 数据(其中一个是子进程的 fork(),另一个是主进程的 if 语句)?
谁能解释更多关于它的细节?谢谢。
【问题讨论】:
标签: c++ multithreading operating-system fork