আমরা জানি যে ফর্ক() সিস্টেম কল প্রক্রিয়াটিকে দুটি প্রক্রিয়ায় ভাগ করতে ব্যবহৃত হয়। যদি ফাংশন ফর্ক() 0 প্রদান করে, তাহলে এটি চাইল্ড প্রসেস এবং অন্যথায় এটি প্যারেন্ট প্রসেস।
এই উদাহরণে আমরা দেখব কিভাবে প্রসেসগুলিকে চারবার বিভক্ত করা যায়, এবং সেগুলোকে নিচের দিকে ব্যবহার করা যায়। তাই প্রথমে আমরা দুইবার fork() ফাংশন ব্যবহার করব। সুতরাং এটি একটি শিশু প্রক্রিয়া তৈরি করবে, তারপর পরবর্তী কাঁটা থেকে এটি আরেকটি শিশু তৈরি করবে। এর পরে অভ্যন্তরীণ কাঁটা থেকে এটি স্বয়ংক্রিয়ভাবে তাদের একটি নাতি-নাতনি তৈরি করবে।
আমরা অপেক্ষা () ফাংশন ব্যবহার করব যাতে কিছু বিলম্ব তৈরি হয় এবং প্রক্রিয়াগুলিকে নীচের দিকে চালানো হয়৷
উদাহরণ কোড
#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;
} আউটপুট
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:~$