2015-09-07 3 views
-1

Как мы можем создать двоичное дерево fork, которое дает 15 процессов в программе C? Я попытался написать код, но у меня есть некоторые трудности с 15 процессами. Кроме того, вилка меня всегда путала! Кроме того, для каждого процесса мы должны распечатать его идентификатор процесса и идентификатор его родителя.двоичное дерево из 15 процессов по программе C

это мой код:

((когда я копировать вставить свой код, я не могу отправить вопрос))

, если вы можете помочь мне с правильным кодом, я был бы более чем счастлив

спасибо

+0

#include #include основной() { INT returnPid; // #include if ((returnPid = fork()) == -1) { perror ("can not fork"); выход (1); } else if (returnPid == 0) {// дочерний процесс printf ("Ребенок: returnPid =% d, my pid =% d, parent pid =% d \ n", returnPid, getpid(), getppid()); выход (0); } else { printf ("Родитель: returnPid =% d, my pid =% d, parent pid =% d \ n", returnPid, getpid(), getppid (0)); выход (0); } } ЭТО МОЙ КОД – jameel

ответ

0

Вам нужно держать в обратном направлении. Это будет порождать 15 процессов для вас с помощью вилки:

#include <stdlib.h> 
#include <stdio.h> 

int main() { 
    int returnPid; 
    int numForks = 0; 
    while (numForks++ < 15) { 
     if ((returnPid = fork()) == -1) { 
      perror("can't fork"); 
      exit(1); 
     } else if (returnPid == 0) { 
      // Child process 
      printf("Child: returnedPid = % d, my pid = %d, parent pid = %d, fork count = %d \n", returnPid, getpid(), getppid(), numForks); 
     } else { 
      printf("Parent: returnedPid = %d, my pid = %d, parent pid = %d \n ", returnPid, getpid(), getppid(0)); 
      exit(0); 
     } 
    } 
    exit(0); 
} 

Выход:

Parent: returnedPid = 15622, my pid = 15621, parent pid = 13927 
Child: returnedPid = 0, my pid = 15622, parent pid = 1, fork count = 1 
Parent: returnedPid = 15623, my pid = 15622, parent pid = 1 
Child: returnedPid = 0, my pid = 15623, parent pid = 1, fork count = 2 
Parent: returnedPid = 15625, my pid = 15623, parent pid = 1 
Child: returnedPid = 0, my pid = 15625, parent pid = 15623, fork count = 3 
Parent: returnedPid = 15626, my pid = 15625, parent pid = 1 
Child: returnedPid = 0, my pid = 15626, parent pid = 1, fork count = 4 
Parent: returnedPid = 15627, my pid = 15626, parent pid = 1 
Child: returnedPid = 0, my pid = 15627, parent pid = 15626, fork count = 5 
Parent: returnedPid = 15628, my pid = 15627, parent pid = 1 
Child: returnedPid = 0, my pid = 15628, parent pid = 1, fork count = 6 
Parent: returnedPid = 15629, my pid = 15628, parent pid = 1 
Child: returnedPid = 0, my pid = 15629, parent pid = 15628, fork count = 7 
Parent: returnedPid = 15631, my pid = 15629, parent pid = 1 
Child: returnedPid = 0, my pid = 15631, parent pid = 15629, fork count = 8 
Parent: returnedPid = 15632, my pid = 15631, parent pid = 1 
Child: returnedPid = 0, my pid = 15632, parent pid = 1, fork count = 9 
Parent: returnedPid = 15634, my pid = 15632, parent pid = 1 
Child: returnedPid = 0, my pid = 15634, parent pid = 15632, fork count = 10 
Parent: returnedPid = 15635, my pid = 15634, parent pid = 1 
Child: returnedPid = 0, my pid = 15635, parent pid = 15634, fork count = 11 
Parent: returnedPid = 15636, my pid = 15635, parent pid = 1 
Child: returnedPid = 0, my pid = 15636, parent pid = 15635, fork count = 12 
Parent: returnedPid = 15637, my pid = 15636, parent pid = 1 
Child: returnedPid = 0, my pid = 15637, parent pid = 15636, fork count = 13 
Parent: returnedPid = 15638, my pid = 15637, parent pid = 1 
Child: returnedPid = 0, my pid = 15638, parent pid = 15637, fork count = 14 
Parent: returnedPid = 15639, my pid = 15638, parent pid = 1 
Child: returnedPid = 0, my pid = 15639, parent pid = 15638, fork count = 15 
Смежные вопросы