[Linux]——进程控制(中)
目录
一、前言
二、进程等待
1.什么是进程等待
2.进程等待的必要性
3.进程等待的方法
①wait方法
②waitpid方法
③获取子进程status
④options参数
三、结语
一、前言
在进程状态学习的那一章中,我们介绍了如果一个子进程在进程结束后,其进程状态会变为僵尸状态,等待父进程对其进行回收。那么在这一章中,我们就将为大家介绍进程回收的方式——进程等待
二、进程等待
1.什么是进程等待
进程等待是指一个进程因为某些原因暂时无法继续执行,必须等待某个条件满足或某个事件发生后才能继续执行的状态。在本文中主要是指父进程对子进程进行等待子进程退出并且将子进程进行资源回收的过程。
这是操作系统进行资源管理、任务调度和同步协调的重要机制之一
2.进程等待的必要性
●子进程进入僵尸进程无法被杀死,需要通过进程等待来杀掉它,进而解决内存泄漏问题
●我们需要通过进程等待,获取退出情况,因为作为用户或者说对父进程来说,我们想要知道布置给子进程的任务,它完成的怎么样(可选)
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7
8
9 int main()
10 {
11 pid_t id=fork();
12 if(id<0)
13 {
14 perror("fork");
15 return 1;
16 }
17 else if(id == 0)
18 {
19 //child
20 int cnt=5;
21 while(cnt)
22 {
23 printf("I'm a child, pid:%d, ppid:%d, cnt:%d
",getpid(),getppid(),cnt);
24 cnt--;
25 sleep(1);
26 }
27 exit(0);
28 }
29 else
30 {
31 //parent
32 printf("I'm a father, pid:%d, ppid:%d
",getpid(),getppid());
33 }
34 sleep(100);
35 return 0;
36 }
当我们执行上述代码,并当子进程结束时,我们查询此时子进程的状态,的确是处于僵尸僵尸状态,等待父进程进行回收