When I run the code below
#include <stdio.h>
#include <sys/types.h>
//int i=0;
int main(){
int id ;
id = fork() ;
printf("id value : %d
",id);
if ( id == 0 )
{
printf ( "Child : Hello I am the child process
");
printf ( "Child : Child’s PID: %d
", getpid());
printf ( "Child : Parent’s PID: %d
", getppid());
}
else
{
printf ( "Parent : Hello I am the parent process
" ) ;
printf ( "Parent : Parent’s PID: %d
", getpid());
printf ( "Parent : Child’s PID: %d
", id);
}
}
My output is
id value : 20173
Parent : Hello I am the parent process
Parent : Parent’s PID: 20172
Parent : Child’s PID: 20173
id value : 0
Child : Hello I am the child process
Child : Child’s PID: 20173
Child : Parent’s PID: 1
How can the parent's PID(20172) differ from the child's parent's ID (1)? Shouldn't those two be equal?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…