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

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

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

ज़ोंबी प्रोसेस

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

अनाथ प्रोसेस

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

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

एक अनजाने में अनाथ प्रोसेस तब बनता है जब उसका पैरेंट प्रोसेस क्रैश या समाप्त हो जाता है। अनजाने अनाथ प्रोसेस को प्रोसेस ग्रुप मैकेनिज्म का उपयोग करके टाला जा सकता है।

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

उदाहरण कोड

#include <stdio.h>
#include <unistd.h>

int main() {
   int x = fork(); // चाइल्ड प्रोसेस बनाएं
   if (x > 0) // यदि x शून्येतर है, तो यह पैरेंट प्रोसेस है
      printf("पैरेंट के अंदर---- PID है: %d\n", getpid());
   else if (x == 0) { // चाइल्ड प्रोसेस के लिए x 0 होगा
      sleep(5); // कुछ समय प्रतीक्षा करें
      x = fork();
      if (x > 0) {
         printf("चाइल्ड के अंदर---- PID: %d और पैरेंट का PID: %d\n", getpid(), getppid());
         while (1)
            sleep(1);
         printf("चाइल्ड के अंदर---- पैरेंट का PID: %d\n", getppid());
      } else if (x == 0)
         printf("ग्रैंडचाइल्ड प्रोसेस के अंदर---- पैरेंट का PID: %d\n", getppid());
   }
   return 0;
}

आउटपुट

पैरेंट के अंदर---- PID है: 3821
चाइल्ड के अंदर---- PID: 3822 और पैरेंट का PID: 686
ग्रैंडचाइल्ड प्रोसेस के अंदर---- पैरेंट का PID: 3822

नोट: PID मान प्रत्येक रन में भिन्न होंगे। चाइल्ड का पैरेंट PID 686 (init प्रोसेस) दिखाता है क्योंकि मूल पैरेंट समाप्त हो गया है।

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

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

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

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

  1. Windows में किसी प्रोग्राम के CPU उपयोग को कैसे सीमित करें? Windows में किसी प्रोग्राम के CPU उपयोग को कैसे सीमित करें?

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