1、孤儿进程
- 父进程创建子进程
- 父进程先死,子进程还活着,子进程叫孤儿进程
- 孤儿进程被init进程领养,init进程变为该孤儿进程的父进程
- 为了释放子进程占用系统资源:进程结束之后,能够释放用户区空间,但是释放不了pcb,必须由父进程释放
2、僵尸进程
- 父进程创建子进程
- 子进程死了,父进程活着。
- 父进程不去释放子进程的pcb
- 子进程变为僵尸进程
- 僵尸进程是一个已经死掉的进程
3、进程回收
(1)wait
- wait - 阻塞函数:等待子进程死亡。
- pid_t wait(int *status)
- 返回值:回收失败(已经没有子进程了)返回-1;回收成功返回被回收的子进程的pid。
- 参数:ststus:判断子进程是如何死的(正常退出或被信号杀死)
- 调用一次只能回收一个子进程
- 头文件 # include <sys/wait.h>
示例:
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <string.h>
# include <sys/types.h>
# include <sys/wait.h>
# include <sys/stat.h>
int main()
{
pid_t pid = fork();
if(pid > 0)