一、进程退出
进程在退出的时候会返回一个退出码(代表当前进程的退出状态)
命令行进程的父进程都是bash
退出码由父进程接收 让父进程了解子进程的退出信息
1.进程退出的场景
- 正常退出
- 异常退出
2.进程退出的常见方法
(1)main函数中的 return
int main(){
return 0;
}
echo $? 打印最近进程的退出码
(2)调用exit()
exit函数的参数是当前进程要返回的退出码,可以在任意位置调用,即便是在普通的函数中也可以调用。(main函数退出的时候,即便不加 return 0,也会隐式调用exit;非main函数不会隐式调用exit函数)。
(3)调用_exit()
_exit函数的参数是当前进程要返回的退出码,同样可以在任意位置调用,即便是在普通的函数中也可以调用。
(4)exit函数和_exit函数的关系
exit 最后也会调用 _exit函数,但exit在中止进程的同时,还会刷新缓冲区、关闭流等。
二、进程等待
父进程在忙,子进程结束了,但无人回收,这样就造成了“死亡”的子进程一直占用资源
这个时候的子进程被称为“僵尸进程”
为了解决这个问题,最初的思路是:让父进程停下,等待子进程执行完,然后回收子进程。