Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

एक सी प्रोग्राम में ज़ोंबी और अनाथ प्रक्रिया को कैसे निष्पादित करें?

इस खंड में हम देखेंगे कि सी/सी++ में एक ही प्रोग्राम में जॉम्बी प्रक्रिया और अनाथ प्रक्रिया को कैसे निष्पादित किया जाए। मुख्य चर्चा में जाने से पहले, आइए देखें कि ज़ोम्बी प्रक्रिया और अनाथ प्रक्रिया क्या हैं।

ज़ोंबी प्रक्रियाएं

एक ज़ोंबी प्रक्रिया एक ऐसी प्रक्रिया है जिसका निष्पादन पूरा हो गया है लेकिन इसकी प्रक्रिया तालिका में अभी भी एक प्रविष्टि है। ज़ोंबी प्रक्रियाएं आमतौर पर बाल प्रक्रियाओं के लिए होती हैं, क्योंकि मूल प्रक्रिया को अभी भी अपने बच्चे की निकास स्थिति को पढ़ने की आवश्यकता होती है। एक बार यह प्रतीक्षा प्रणाली कॉल का उपयोग करके किया जाता है, ज़ोंबी प्रक्रिया प्रक्रिया तालिका से समाप्त हो जाती है। इसे जॉम्बी प्रोसेस रीपिंग के रूप में जाना जाता है।

अनाथ प्रक्रियाएं

अनाथ प्रक्रियाएं वे प्रक्रियाएं हैं जो अभी भी चल रही हैं, भले ही उनकी मूल प्रक्रिया समाप्त या समाप्त हो गई हो। एक प्रक्रिया जानबूझकर या अनजाने में अनाथ हो सकती है।

एक जानबूझकर अनाथ प्रक्रिया बिना किसी मैन्युअल समर्थन के पृष्ठभूमि में चलती है। यह आमतौर पर अनिश्चित काल तक चलने वाली सेवा शुरू करने या उपयोगकर्ता के ध्यान के बिना लंबे समय से चल रहे कार्य को पूरा करने के लिए किया जाता है।

एक अनजाने में अनाथ प्रक्रिया तब बनाई जाती है जब इसकी मूल प्रक्रिया क्रैश या समाप्त हो जाती है। प्रक्रिया समूह तंत्र का उपयोग करके अनजाने में अनाथ प्रक्रियाओं से बचा जा सकता है।

अब निम्नलिखित कोड में हम ज़ोंबी और अनाथ प्रक्रिया को एक साथ निष्पादित करेंगे। यहां हमारे पास माता-पिता की प्रक्रिया है, इसमें एक बच्चा है, और इस बच्चे का एक और बच्चा है। यदि हमारा नियंत्रण बाल प्रक्रिया में सम्मिलित होता है, तो हम निष्पादन को 5 सेकंड के लिए रोक देंगे ताकि यह मूल प्रक्रिया को समाप्त कर सके। इस प्रकार बाल प्रक्रिया अनाथ प्रक्रिया बन जाती है। उसके बाद पोते की प्रक्रिया को ज़ोंबी प्रक्रिया में बदल दिया जाएगा। पोता निष्पादन समाप्त करता है जब उसके माता-पिता (मुख्य प्रक्रिया का बच्चा) 1 सेकंड के लिए सोता है। इसलिए पोते की प्रक्रिया समाप्त नहीं होती है, और इसकी प्रविष्टि प्रक्रिया तालिका में होगी।

उदाहरण कोड

#include <stdio.h>
#include <unistd.h>
int main() {
   int x = fork(); //create child process
   if (x > 0) //if x is non zero, then it is parent process
      printf("Inside Parent---- PID is : %d\n", getpid());
   else if (x == 0) { //for chile process x will be 0
      sleep(5); //wait for some times
      x = fork();
      if (x > 0) {
         printf("Inside Child---- PID :%d and PID of parent : %d\n", getpid(), getppid());
         while(1)
            sleep(1);
         printf("Inside Child---- PID of parent : %d\n", getppid());
      }else if (x == 0)
      printf("Inside grandchild process---- PID of parent : %d\n", getppid());
   }
   return 0;
}

आउटपुट

soumyadeep@soumyadeep-VirtualBox:~$ ./a.out
Inside Parent---- PID is : 3821
soumyadeep@soumyadeep-VirtualBox:~$ Inside Child---- PID :3822 and PID of parent : 686
Inside grandchild process---- PID of parent : 3822
soumyadeep@soumyadeep-VirtualBox:~$

  1. विंडोज 10 पर छिपे और जिद्दी सॉफ्टवेयर को कैसे अनइंस्टॉल करें

    जब आप किसी ऐप को अनइंस्टॉल करना चाहते हैं तो निराशा होती है, लेकिन आपको इससे छुटकारा पाने का कोई तरीका नहीं मिल रहा है। यह तब और भी बुरा होता है जब आप किसी प्रोग्राम को अनइंस्टॉल करने की कोशिश करते हैं, और यह आपके पीसी को छोड़ने से इंकार कर देता है। तो, आप अपने विंडोज डिवाइस से इन अवांछित ऐप्स से आ

  1. डेस्कटॉप शॉर्टकट क्या है और यह कैसे काम करता है?

    क्या आपने कभी सोचा है कि आपके डेस्कटॉप पर शॉर्टकट कैसे काम करते हैं? वे आपके कंप्यूटर पर अन्य फ़ाइलों की तुलना में अलग तरह से काम करते हैं, और एक अच्छे कारण के लिए; वे अद्वितीय फ़ाइलें हैं जो किसी अन्य से अलग कार्य करती हैं। आइए जानें कि क्या शॉर्टकट को खास बनाता है और वे कैसे काम करते हैं। शॉर्टक

  1. विंडोज़ में प्रोग्राम के सीपीयू उपयोग को कैसे सीमित करें?

    अपने CPU के उपयोग पर नज़र रखना बहुत उपयोगी है। ऐसा इसलिए है क्योंकि यदि आपका सीपीयू ओवरलोड हो रहा है, तो यह थ्रॉटलिंग को समाप्त कर सकता है जिससे आपके पीसी का समग्र प्रदर्शन खराब हो सकता है। जैसा कि यह पता चला है, यह आपके कंप्यूटर पर आपके द्वारा किए जाने वाले दिन-प्रतिदिन के कार्यों को महत्वपूर्ण रूप