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:~$