1
我无法弄清楚它是如何工作的。fork系统调用将父进程拆分为两个进程,它为子进程返回零。根据我的输出,子进程应该是glb = 101.var = 89。但是I我错了。有人能解释一下它的工作原理吗?fork调用子进程和父进程之后,值之间会有什么不同?
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int glb=100;
int main()
{
int pid;
int var =88;
printf ("Before Fork\n");
pid=fork();
if(pid <0)
{
perror("fork");
exit(1);
}
if(pid ==0) /**child**/
{
glb++;var++;
}
else
{
sleep(5);
}
printf("pid= %d,glb=%d,var=%d\n",getpid(),glb,var);
return 0;
}
适用于我的作品:'前叉' 'pid = 31955,glb = 101,var = 89' 'pid = 31954,glb = 100,var = 88'什么输出你是否意识到它不会? – dbush
对于孩子不输出“glb = 101,var = 89”你错了吗?它确实输出。 –
是的,现在它确实,我关闭了终端,并再次运行它现在它工作正常。但我有一个问题,他们是在增加订单或可以改变也。谢谢。 – vish22