Chinaunix首页 | 论坛 | 博客
  • 博客访问: 68762
  • 博文数量: 30
  • 博客积分: 1260
  • 博客等级: 中尉
  • 技术积分: 285
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-03 12:27
文章分类

全部博文(30)

文章存档

2010年(30)

我的朋友

分类: LINUX

2010-08-12 12:30:05

子进程是父进程调用fork后生成的,如果子进程
 
什么是僵死进程?
   一个子进程在父进程还没有调用wait或waitpid前退出,父进程无法对该子进程进行善后处理(获取终止子进程的有关信息,释放它仍占用的资源),该子进程则为僵死进程.
 
什么是孤儿进程?
  如果父进程先于子进程结束,内核会将这些子进程的父进程设为init进程,而这些子进程称为孤儿进程,需要注意的是,因为init被编写为无论何时只要有一个子进程终止,init就会调用一个wait函数取得其终止状态,因此孤儿进程或者说init的所有子进程都不会变为僵死进程.
 
如何防止进程变成僵死进程?
1.内核在进程退出时,会发送SIGCHLD信号给父进程,因此,可以在SIGCHLD信号的处理函数是增回wait调用以确保终止进程的资源得到合理回收,从而避免变成僵死进程
2.使用特别的编写方式(两次fork),使得子进程的父进程为init进程,由init进程确保该进程不会变成僵死进程
 
 
 
阅读(825) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~