僵尸进程危害:系统若产生大量的僵尸进程,最终会导致不能创建进程(达到系统最大进程数阈值)。
孤儿进程:父进程在子进程结束之前退出,这时子进程为孤儿进程。
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();
}