我想用用C fork()
功能在Linux的多进程工作,这是我的代码:进程的父ID不同于PID的父
p1 = fork();
if(p1 != 0){
p2 = fork();
}
printf("My PID is %d\n",getpid());
printf("My parent PID is %d\n",getppid());
现在让我们假设父进程ID是100,并且两个子进程(P1,P2)ID是101 & 102和init进程PID为0我的期望输出是:
My PID is 100
My parent PID is 0
My PID is 101
My parent PID is 100
My PID is 102
My parent PID is 100
相反,我看到的东西不同,两个子进程具有相同的PPID但第一个进程哈与此不同,它是一个不同的PID。下面是一个示例输出我得到:
My PID is 3383
My parent PID is 3381
My PID is 3387
My parent PID is 1508
My PID is 3386
My parent PID is 1508
我的问题是,不应该将两个子进程的父进程PID是? 希望有人能解释一切如何在这里工作,我在做什么(或思考)错误。
当'printf'完成后添加睡眠时会发生什么? –
@MohitJain它实际上修复它,它是如何发生的?我的意思是一个睡眠''printf'不应该真的改变任何东西,因为进程将被创建和'叉'相同... – argamanza