Разница между родительским и основным процессом и как определить основной процесс? - PullRequest
0 голосов
/ 20 марта 2019

В следующем примере я создаю 3 других процесса, и у меня также есть 1 основной процесс.Итак, всего 4 процесса, которые выполняются.Мой вопрос о том, что я могу проверить, какой процесс является родительским, а какой - дочерним, контролируя возвращаемое значение функции системного вызова fork.Однако, как я могу обнаружить выполнение основного процесса?И в чем разница между основным процессом и родительским процессом?

#include <stdio.h> 
#include <unistd.h>
#include <sys/types.h> 
int main() 
{ 
    int a =fork(); 
    int b =fork(); 


    if (a == 0) 
        printf("Hello from Child(A)!\n"); 

    // parent process because return value non-zero. 
    else
        printf("Hello from Parent(A)!\n"); 

    if (b == 0) 
        printf("Hello from Child(B)!\n"); 

    // parent process because return value non-zero. 
    else
        printf("Hello from Parent(B)!\n"); 


    return 0; 
} 

1 Ответ

5 голосов
/ 20 марта 2019

Ваш код создает 4 процесса:

  • (a > 0) && (b > 0): исходный процесс
  • (a == 0) && (b > 0): первый дочерний процесс исходного процесса (дочерний A)
  • (a > 0) && (b == 0): второй дочерний процесс исходного процесса (дочерний элемент B)
  • (a == 0) && (b == 0): первый дочерний процесс дочернего процесса A (дочерний элемент AA)

Запомнитьчто fork создает дочерний процесс и возвращает pid этого дочернего процесса в родительском процессе и возвращает 0 в дочернем процессе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...