僵尸进程
定义
子进程先于父进程退出,父进程没有对子进程的退出做出相应的处理,此时子进程就会变成僵尸进程
影响
进程退出后,仍有部分信息残留在内存中占用空间,大量的僵尸进程会消耗系统资源,影响系统运行,所以应该尽量避免僵尸进程的产生
僵尸进程的处理方法
父进程处理子进程的退出退出状态(阻塞父进程的运行)
-
pid,status = os.wait()
在父进程中阻塞等待处理子进程退出- 返回值:
返回一个包含两个元素的元组,第一个是退出的子进程的PID号,第二个是子进程的退出状态
- 返回值:
-
pid,status = os.waitpid(pid,option)
在父进程中阻塞等待处理子进程退出- 参数:
-
pid
-1
表示等待任意子进程退出 -
pid
>0
表示等待对应PID号的子进程退出 -
option
0
表示阻塞等待 -
option
WNOHANG
表示非阻塞状态 wait() === waitpid(-1,0)
-
- 返回值:
返回一个包含两个元素的元组,第一个是退出的子进程的PID号,第二个是子进程的退出状态
- 参数:
- 让父进程先退出(不好控制)
- 父进程创建子进程等待子进程退出
- 子进程创建二级子进程后立即退出
- 二级子进程成为为孤儿进程,和原来的父进程各自执行事件
- 在父进程中使用信号处理的方法忽略子进程发来的信号
signal(SIGCHLD,SIG_ING)
孤儿进程
定义
父进程先于子进程退出,此时子进程就会变为孤儿进程
影响
- 当一个进程变为孤儿进程,操作系统会指定一个进程成为孤儿进程新的父进程
- 当孤儿进程退出时,系统会自动回收孤儿,使它不会成为僵尸
- 孤儿进程对系统资源没什么影响
守护进程
- 生命周期长
- 与前端控制台无关
- 后台运行,一般用作系统进程或者自动化运行进程
网友评论