2014-01-27 1 views
0

Это мой код C для создания двух дочерних процессов из родительского процесса. Будет ли это успешно создано? Мой выходной ток:приведет ли этот код к успешному созданию двух дочерних процессов из родительских процессов?

Вы в родительском процессе которого идентификатор 29509
вы в детском процессе 1 и ваш родительский идентификатор 29509
Вы в родительском процессе которого идентификатор 29511
вы находитесь в дочерний процесс 2 и ваш родительский идентификатор - 29509

Почему в третьей строке моего вывода родительский идентификатор отличается?

#include<stdio.h> 
    #include<unistd.h> 
    int main(){ 
      pid_t child1,child2; 
      int c,d,e; 
      child1=fork(); 
      if(child1==0){ 
        c=getppid(); 
        printf("you are in child process 1 and your parent id is %d\n",c); 

      } 
      else{ 
        child2=fork(); 
        e=getpid(); 
        printf("You are in parent process whose id is %d\n",e); 
      } 
      if(child2==0){ 
        d=getppid(); 
        printf("you are in child process 2 and your parent id is %d\n",d); 
      } 
    } 

Выход

You are in parent process whose id is 29509 
you are in child process 1 and your parent id is 29509 
You are in parent process whose id is 29511 
you are in child process 2 and your parent id is 29509 

ответ

1

После вашего второго fork, как родитель и второй ребенок выполнить «родительский процесс» printf.

1

e=getpid(); printf("You are in parent process whose id is %d\n",e);

Эти строки выполняются родителем и ребенком.

Смежные вопросы