僵尸态进程:
子进程结束啦,按时没有父进程收尸!
创建一个僵尸态的子进程:
父进程是存在的,只是没有做收尸操作而已!
但是此时子进程已经结束!
根据上述特点,创建一个僵尸态的子进程,通过 ps aux | grep a.out
查看僵尸态子进程
ubuntu 3909 0.0 0.0 1992 280 pts/1 S+ 19:35 0:00 ./a.out
--
Z
[1].进程的生命周期
(a).进程的创建 -- fork
(b).进程的执行 -- a.子进程中实现处理逻辑 b.调用exec函数族 实现 运行新程序
(c).进程的结束 -- exit _exit (return main)
两种进程状态
1).孤儿进程
特点:
父进程结束了,但是子进程还存在,此时子进程被init进程收养
2).僵尸进程
特点:
子进程结束了,但是父进程还存在,并且父进程没有做任何收尸操作,导致子进程成为僵尸态的进程
收尸: 回收资源
僵尸态的进程占用哪些资源?
[1].pcb 进程占用的内存
pcb 描述了进程 信息的
僵尸态进程是进程本身已经结束了但是对应的pcb还没有释放
"我是我" ---->"销户"
wait 函数:
pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
进程的状态改变:
(1),子进程结束
(2).子进程被暂停
(3).子进程被重新恢复
wait 函数: 是一个阻塞的方式 会导致 调用进程 阻塞 ,直到 调用进程的子进程结束
waitpid();
@options
WNOHANG //no hang 非阻塞的方式 等待子进程结束
WUNTRACED //R --> T 子进程从 运行态 到 T(stop)的状态的改变
WCONTINUED//T --> R 子进程被恢复的状态改变
@status 非NULL 则获取进程的退出状态信息
子进程结束啦,按时没有父进程收尸!
创建一个僵尸态的子进程:
收尸---wait(NULL); //关心子进程的退出,进行子进程的收尸操作
父进程是存在的,只是没有做收尸操作而已!
但是此时子进程已经结束!
根据上述特点,创建一个僵尸态的子进程,通过 ps aux | grep a.out
查看僵尸态子进程
ubuntu 3909 0.0 0.0 1992 280 pts/1 S+ 19:35 0:00 ./a.out
--
Z
[1].进程的生命周期
(a).进程的创建 -- fork
(b).进程的执行 -- a.子进程中实现处理逻辑 b.调用exec函数族 实现 运行新程序
(c).进程的结束 -- exit _exit (return main)
两种进程状态
1).孤儿进程
特点:
父进程结束了,但是子进程还存在,此时子进程被init进程收养
2).僵尸进程
特点:
子进程结束了,但是父进程还存在,并且父进程没有做任何收尸操作,导致子进程成为僵尸态的进程
收尸: 回收资源
僵尸态的进程占用哪些资源?
[1].pcb 进程占用的内存
pcb 描述了进程 信息的
僵尸态进程是进程本身已经结束了但是对应的pcb还没有释放
"我是我" ---->"销户"
wait 函数:
pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
进程的状态改变:
(1),子进程结束
(2).子进程被暂停
(3).子进程被重新恢复
wait 函数: 是一个阻塞的方式 会导致 调用进程 阻塞 ,直到 调用进程的子进程结束
waitpid();
@options
WNOHANG //no hang 非阻塞的方式 等待子进程结束
WUNTRACED //R --> T 子进程从 运行态 到 T(stop)的状态的改变
WCONTINUED//T --> R 子进程被恢复的状态改变
@status 非NULL 则获取进程的退出状态信息
exit();