родитель разветвляется на двоих детей, и каждый из них разветвляется на двоих - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь создать это: parent разветвляет двух дочерних элементов, и каждый из них разветвляется на двух дочерних элементов, а затем parent вызывает функцию ps (), которая печатает pid, parentpid, состояние и имя активных процессов в системе.Вот моя попытка, и результат этого: Однако, это не печать структуры, которую я хотел.

Как я могу это исправить?Что я делаю неправильно?Спасибо!

if (fork()) {  //p1
      //parent
      ps();
      wait();
      if (fork()) {  //p1
    //parent
    wait ();
      } else  {      //c2
    //child
    if (fork()) {  //c2
      //parent
      wait();
      if (fork()) {  //c2
        //parent
        wait();
      } else  {   //c4
        //child
        sleep(43);
        exit();
      }
    } else  {   //c3
      //child
      sleep(43);
      exit();
    }
      }
  } else  {              //c1
    //child
    wait();
    wait();
    if (fork()) {     
      //parent       //c1
      //wait();
      if (fork()) {  //c1
    //parent
    //wait();
      } else  {      //c6
    //child
    sleep(43);
    exit();
      }
    } else  {            //c5
      //child
      sleep(43);
      exit();
    }
    }
    ```
output:
It prints this:
1 1 S init
2 1 S sh
3 2 R pstest
4 3 Z pstest
5 1 S pstest
6 1 S pstest

...