विकिपीडिया कहता है "एक बच्चा प्रक्रिया जो समाप्त हो जाती है लेकिन इसके माता-पिता द्वारा कभी भी इंतजार नहीं किया जाता है, वह ज़ोंबी प्रक्रिया बन जाता है।" मैं इस कार्यक्रम को चलाता हूं:ज़ोंबी प्रक्रिया क्यों मौजूद है?
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
pid_t pid, ppid;
printf("Hello World1\n");
pid=fork();
if(pid==0)
{
exit(0);
}
else
{
while(1)
{
printf("I am the parent\n");
printf("The PID of parent is %d\n",getpid());
printf("The PID of parent of parent is %d\n",getppid());
sleep(2);
}
}
}
यह एक ज़ोंबी प्रक्रिया बनाता है, लेकिन मुझे समझ में नहीं आता कि ज़ोंबी प्रक्रिया क्यों बनाई गई है?
कार्यक्रम के उत्पादन
Hello World1
I am the parent
The PID of parent is 3267
The PID of parent of parent is 2456
I am the parent
The PID of parent is 3267
The PID of parent of parent is 2456
I am the parent
....
.....
है लेकिन क्यों यह है कि "बच्चे प्रक्रिया समाप्त हो जाता है, लेकिन इसके जनक द्वारा पर इंतजार कर रहे थे नहीं है" इस मामले में है?
pid=fork();
if (pid==0) {
exit(0); // <--- zombie is created on here
} else {
// some parent code ...
}
क्यों:
आप पूछ रहे हैं क्यों एक ज़ोंबी प्रक्रिया की अवधारणा यूनिक्स में पेश किया गया था? जैसा कि यह खड़ा है, मैं आपके प्रश्न का एकमात्र उत्तर देखता हूं "क्योंकि इस तरह ज़ोंबी प्रक्रियाओं को परिभाषित किया जाता है"। –
** "यह समझ में नहीं आया कि ज़ोंबी प्रक्रिया क्यों बनाई गई है" ** ऐसा इसलिए होगा क्योंकि आप बच्चे की निकास स्थिति को पढ़ने के लिए 'प्रतीक्षा()' नहीं बुला रहे हैं, और इसलिए इसकी प्रविष्टि प्रक्रिया तालिका में पीछे छोड़ दी गई है । –
ठीक है। लेकिन जब बच्चा कुछ समय तक चलता है और अस्तित्व में रहता है तो कोई ज़ोंबी – user567879