2011-08-26 12 views
5

kill -s SIGCHLD
Lo anterior es el código para matar a cualquier proceso de zombie, pero mi pregunta es:
¿Hay alguna forma en que se manifieste un proceso Zombie?¿Cómo se manifiesta un proceso zombie?

+1

Buena pregunta, pero creo que encajaría mejor en http://unix.stackexchange.com/ o posiblemente http://askubuntu.com/ – steenhulthin

Respuesta

7

steenhulthin es correcto, pero hasta que alguien lo mueva, alguien puede responderlo aquí. Existe un proceso zombie entre el momento en que termina un proceso secundario y el momento en que el padre llama a una de las funciones wait() para obtener su estado de salida.

Un ejemplo sencillo:

/* 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 para " cruelmente deja que su hijo exista ... ":) y una buena respuesta. –

Cuestiones relacionadas