2011-08-26 22 views
5

kill -s SIGCHLD
उपर्युक्त ज़ोंबी प्रक्रिया को मारने के लिए कोड है, लेकिन मेरा प्रश्न है:
क्या कोई तरीका है जिसके द्वारा एक ज़ोंबी प्रक्रिया स्वयं प्रकट होती है ??ज़ोंबी प्रक्रिया कैसे प्रकट होती है?

+1

अच्छा सवाल है, लेकिन मुझे लगता है कि उस पर http://unix.stackexchange.com/ या संभवतः http://askubuntu.com/ – steenhulthin

उत्तर

7

स्टीनहुलथिन सही है, लेकिन जब तक इसे स्थानांतरित नहीं किया जाता है तब तक कोई भी इसका जवाब दे सकता है। एक ज़ोंबी प्रक्रिया उस समय के बीच मौजूद होती है जब एक बच्चे की प्रक्रिया समाप्त हो जाती है और उस समय जब माता-पिता wait() कार्यों में से किसी एक को बाहर निकलने की स्थिति प्राप्त करने के लिए कहते हैं।

एक साधारण उदाहरण:

/* Simple example that creates a zombie process. */ 

#include <stdio.h> 
#include <unistd.h> 
#include <sys/types.h> 
#include <sys/wait.h> 

int main(void) 
{ 
    pid_t cpid; 
    char s[4]; 
    int status; 

    cpid = fork(); 

    if (cpid == -1) { 
     puts("Whoops, no child process, bye."); 
     return 1; 
    } 

    if (cpid == 0) { 
     puts("Child process says 'goodbye cruel world.'"); 
     return 0; 
    } 

    puts("Parent process now cruelly lets its child exist as\n" 
     "a zombie until the user presses enter.\n" 
     "Run 'ps aux | grep mkzombie' in another window to\n" 
     "see the zombie."); 

    fgets(s, sizeof(s), stdin); 
    wait(&status); 
    return 0; 
} 
+3

+1 के लिए बेहतर फिट " क्रूरता से अपने बच्चे को अस्तित्व में रहने देता है ... ":) और एक अच्छा जवाब। –

संबंधित मुद्दे