首页 > 代码库 > 一、进程与信号之僵尸进程
一、进程与信号之僵尸进程
孤儿进程:父进程被终结,子进程成为孤儿进程,被init进程接管
僵尸进程:子进程被终结,内存未被释放,形成僵尸进程
#include <unistd.h>#include <stdlib.h>#include <stdio.h>int main(void){ pid_t pid; pid=fork(); if(pid<0) { printf("fork error"); exit(1); } else if(pid ==0) { //终结子进程 printf("pid: %d,ppid: %d",getpid(),getppid()); exit(0); } while(1) { sleep(1); } exit(0);}
编译执行
ps -aux |grep fork_zombie 2557 0.0 0.0 4224 644 pts/8 S 07:40 0:00 ./fork_zombie 2558 0.0 0.0 0 0 pts/8 Z 07:40 0:00 [fork_zombie] <defunct> 2560 0.0 0.0 21296 936 pts/8 S+ 07:41 0:00 grep --color=auto fork_zombie<defunct> 为僵尸进程
执行杀死父进程 后僵尸进程成为孤儿进程被init进程接管
kill -9 2557
避免僵尸进程方法:
1.父进程通过调用wait(),waitpid() 来回收
2,sigchld 信号处理
3,编程孤儿进程右init回收
一、进程与信号之僵尸进程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。