『面试问答』:什么是僵尸进程和孤儿进程?

面试官 : 请说一下,什么是僵尸进程和孤儿进程?

孤儿进程:孤儿进程指的是父进程死掉后还在执行自己任务的子进程。一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵尸进程。

孤儿进程由于init进程有善后作用,所以孤儿进程没有什么危害,但是僵尸进程虽然运行实体已经消失,但是仍然在内核的进程表中占据一条记录,这样长期下去会造成系统资源的浪费。

对于僵尸进程的处理,有如下几种办法:

1、通过信号机制:子进程退出时向父进程发送SIGCHILD信号,父进程处理SIGCHILD信号,调用wait()或者waitpid(),让父进程阻塞等待僵尸进程的出现,处理完再继续运行父进程。

2、杀死父进程:当父进程陷入死循环等无法处理僵尸进程时,强制杀死父进程,那么它的子进程,即僵尸进程会变成孤儿进程,由init进程来回收。

3、重启系统:当系统重启时,所有进程在系统关闭时被停止,包括僵尸进程,开启时init进程会重新加载其他进程。

#23届找工作求助阵地##晒一晒我的offer##软件开发薪资爆料##我的实习求职记录#
软件开发面试问答 文章被收录于专栏

分享软件开发岗位面试题及答案

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-29 21:14
疯犬丨哈士奇:喜欢你的人会主动表白,对你有想法的人会很主动,所以要你的公司不会吊着你所以懂了吧
点赞 评论 收藏
分享
12-19 16:52
门头沟学院
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务