僵尸进程:在子进程退出后,父进程得到子进程状态信息之前的这段时间,子进程称之为僵尸进程(占用很少的内核资源)。

僵尸进程危害:系统若产生大量的僵尸进程,最终会导致不能创建进程(达到系统最大进程数阈值)。

孤儿进程:父进程在子进程结束之前退出,这时子进程为孤儿进程。

Linux系统中,由init进程负责领养所有的孤儿进程,即init进程会成为所有父进程先于自己退出的进程的父进程。利用Linux系统中该特性,
设计服务器模型如下:

...
socket();
bind();
listen();
while(1)
{
    accept();
    if(fork() == 0)
    {
        if(fork() == 0)/* 创建孙子进程处理客户端的交互式请求 */
        {
             while(1)
             {
                 read();
                 process();/* 处理交互请求 */
                 write();
             }
             close();
             exit();
        }
        else
             exit(0);/* 子进程退出,孙子进程的父进程变成init进程 */   
    }
    close();
}