一、僵尸进程&孤儿进程
1、僵尸进程
当进程退出并且⽗父进程(使⽤用wait()系统调⽤用)没有读取到⼦子进程退出的返回代码时就会产⽣生僵尸进程;僵尸进程会在以终止状态保持在进程表中,并且会一直等待父进程读取退出状态代码。
2、孤儿进程
一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
二、模拟实现僵尸进程和孤儿进程
(1)实现一个子进程维持20秒僵尸进程的代码:
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<unistd.h>
4 #include<sys/types.h>
5
6 int main(void)
7 {
8 pid_t id=fork();
9 if(id<0)
10 {
11 perror("fork");
12 }
13 else if(id==0)
14 {
15 //parent
16 printf("Hi!I'm father!\n");
17 exit(0);
18 }
19 else
20 {
21 // printf("child[%d] is begin