标签:
孤儿进程:父进程被终结,子进程成为孤儿进程,被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回收
标签:
原文地址:http://www.cnblogs.com/peixiguang/p/5827880.html