Computer >> Máy Tính >  >> Lập trình >> C ++

fork () để thực thi các quy trình từ dưới lên bằng cách sử dụng wait () trong C ++

Chúng ta biết rằng lệnh gọi hệ thống fork () được sử dụng để chia quá trình thành hai quá trình. Nếu hàm fork () trả về 0, thì đó là quy trình con, còn nếu không thì đó là quy trình mẹ.

Trong ví dụ này, chúng ta sẽ thấy cách chia các quy trình thành bốn lần và sử dụng chúng theo cách từ dưới lên. Vì vậy, lúc đầu chúng ta sẽ sử dụng hàm fork () hai lần. Vì vậy, nó sẽ tạo ra một process con, sau đó từ fork tiếp theo nó sẽ tạo ra một process con khác. Sau đó, từ ngã ba bên trong, nó sẽ tự động tạo ra một đứa cháu của chúng.

Chúng tôi sẽ sử dụng hàm wait () để tạo ra một số độ trễ và thực thi các quy trình theo cách từ dưới lên.

Mã mẫu

#include <iostream>
#include <sys/wait.h>
#include <unistd.h>
using namespace std;
int main() {
   pid_t id1 = fork(); //make 4 process using two consecutive fork. The main process, two children and one grand child
   pid_t id2 = fork();
   if (id1 > 0 && id2 > 0) { //when both ids are non zero, then it is parent process
      wait(NULL);
      wait(NULL);
      cout << "Ending of parent process" << endl;
   }else if (id1 == 0 && id2 > 0) { //When first id is 0, then it is first child
      sleep(2); //wait 2 seconds to execute second child first
      wait(NULL);
      cout << "Ending of First Child" << endl;
   }else if (id1 > 0 && id2 == 0) { //When second id is 0, then it is second child
      sleep(1); //wait 2 seconds
      cout << "Ending of Second child process" << endl;
   }else {
      cout << "Ending of grand child" << endl;
   }
   return 0;
}

Đầu ra

soumyadeep@soumyadeep-VirtualBox:~$ ./a.out
Ending of grand child
Ending of Second child process
Ending of First Child
Ending of parent process
soumyadeep@soumyadeep-VirtualBox:~$