两支队伍建设专题网站,网页设计规范的主要内容,2021世界500强企业,软件外包网一、进程等待是什么#xff1f;
通过系统调用wait/waitpid#xff0c;来对子进程进行状态检验与回收的工作。
二、为什么要有进程等待 1、子进程退出#xff0c;父进程如果不管不顾#xff0c;就可能造成‘僵尸进程’的问题#xff0c;进而造成内存泄漏。 另外#xf…一、进程等待是什么
通过系统调用wait/waitpid来对子进程进行状态检验与回收的工作。
二、为什么要有进程等待 1、子进程退出父进程如果不管不顾就可能造成‘僵尸进程’的问题进而造成内存泄漏。 另外进程一旦变成僵尸状态就无法被杀死kill-9也不行因为谁也没有办法杀死一个已经死去的进程。 必须解决的 2、子进程运行完成结果对还是不对或者是否正常退出。 通过进程等待获取子进程退出情况--验证给子进程的任务完成的如何。 可选项有时不一定关心完成的如何 父进程通过进程等待的方式回收子进程资源获取子进程退出信息。 三、wait/waitpid
1、函数参数/返回值介绍 阻塞等待如服务器模式
只要没有子进程退出父进程就会在wait()处一直等待不返回默认为阻塞等待状态
阻塞状态scanf是等待硬件资源
wait不返回时相当于等待软件资源 2、父进程wait1个子进程的样例 注wait是等待任意一个子进程退出。
3、循环wait来wait多个子进程 四、利用waitpid获取子进程退出信息 1、输出型参数status 要获取的信息有好几部分因此status的32位被分为几部分使用。 异常退出
[0,6]位 共有2^6 64个信号 表示异常终止本质是进程收到了某个信号 7表示core dump
例如段错误除0错误。 正常退出
[8,15]表示退出状态即exit对应的退出码 通过位运算和得到退出信号和退出码
2、底层原理 子进程退出后释放代码和数据但保留task_struct用来给上层返回退出信息 3、宏(宏函数带类似函数) WIFEXITED-- Wait if exited 查看子进程是否正常退出
WEXITSTATUS-- 子进程退出状态 即退出码
4、options等待方式 options 0 阻塞等待方式
options WNOHANGwait no....
非阻塞轮询非阻塞循环
查询不成功就返回然后继续循环查询直到成功。
两次查询之间的时间可以做自己的事情。