2011-08-26 42 views
5

kill -s SIGCHLD
Ở trên là mã để giết bất kỳ quá trình zombie nào, Nhưng câu hỏi của tôi là:
Có cách nào mà một quá trình Zombie tự biểu lộ không ??Quy trình zombie thể hiện như thế nào?

+1

Tốt câu hỏi, nhưng tôi nghĩ rằng nó sẽ phù hợp tốt hơn trên http://unix.stackexchange.com/ hoặc có thể http://askubuntu.com/ – steenhulthin

Trả lời

7

steenhulthin là chính xác, nhưng cho đến khi nó được di chuyển, ai đó cũng có thể trả lời ở đây. Một quá trình zombie tồn tại giữa thời gian một tiến trình con chấm dứt và thời gian mà phụ huynh gọi một trong các chức năng wait() để có được trạng thái thoát của nó.

Một ví dụ đơn giản:

/* 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 cho " tàn nhẫn cho phép đứa trẻ của nó tồn tại ... ":) và một câu trả lời tốt. –

Các vấn đề liên quan