殭屍進程

    在fork()/execve()過程中,假設子進程結束時父進程仍存在,而父進程fork()之前既沒安裝SIGCHLD信號處理函數調用waitpid()等待子進程結束,又沒有顯式忽略該信號,子進程則成爲殭屍進程,無法正常結束,
    此時即使是root身份kill -9也不能殺死殭屍進程。補救辦法是殺死殭屍進程的父進程(殭屍進程的父進程必然存在),殭屍進程成爲"孤兒進程",過繼給1號進程init,init始終會負責清理殭屍進程。
    產生殭屍進程:

int main(void)
{
        pid_t pid;

        if((pid = fork()) < 0)
        {    
                printf("fork error");
        }else if(pid == 0)
        {    
                    exit(0);
        }    

        system("ps|grep defunct|grep -v grep");
        exit(0);

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章