当前位置: 首页 > wzjs >正文

现在网站建设用dw哪个版本好职业技术培训

现在网站建设用dw哪个版本好,职业技术培训,网站做专题主题该怎么选,六安网吧什么时候解封进程退出 一个标准C库的一个Linux自带的exit() #include <stdlib.h> void exit(int stats);孤儿进程 当父进程运行结束&#xff0c;但子进程运行还没有结束的时候&#xff0c;这个子进程就叫做孤儿进程。 通常情况下&#xff0c;子进程运行结束之后的一些资源会由父进…

进程退出

一个标准C库的一个Linux自带的exit()

#include <stdlib.h>
void exit(int stats);

在这里插入图片描述

孤儿进程

当父进程运行结束,但子进程运行还没有结束的时候,这个子进程就叫做孤儿进程
通常情况下,子进程运行结束之后的一些资源会由父进程回收,然后父进程结束之后再统一回收资源。
当出现孤儿进程之后,没有原先的父进程给他回收资源了,系统会将其**父进程设置为init,PPID为1。**相当于有党和国家帮忙善后回收子进程的资源。
孤儿进程是没有危害的。因为最终的资源都会被回收掉

僵尸进程

当进程结束之后,虚拟地址空间中的用户区数据会自己释放掉,但是内核区的一些数据需要父进程去释放。
子进程已经结束,父进程尚未回收,那么子进程的残留资源(PCB)存放在内核中,变成僵尸进程
僵尸进程不能被 kill -9杀掉,其内核信息一直没有被回收进程号就会被一直占用,但系统的进程号是有限的,可能会导致系统不能产生新的进程,有危害,应当避免。

解除僵尸进程–进程回收

在每个进程退出的时候,内核释放该进程所有的资源、包括打开的文件、占用的内存等。但是仍然为其保留一定的信息,这些信息主要主要指进程控制块PCB的信息(包括进程号、退出状态、运行时间等)

  • wait()waitpid()` 函数的功能一样,区别在于
    • wait() 函数会阻塞
    • waitpid() 可以设置是否阻塞,waitpid() 还可以指定等待哪个子进程结束
  • 注意:一次waitwaitpid调用只能清理一个子进程,清理多个子进程应使用循环

wait()

等待任意一个子进程结束,如果一个子进程结束了,此函数挥挥手子进程的资源

#include <sys/types.h>
#include <sys/wait.h>pid_t wait(int *wstatus);功能:等待任意一个子进程结束,如果任意一个子进程结束了,此函数会回收子进程的资源参数:int *wstatus:进程退出时的状态信息,传入的是一个int类型的地址,是一个传出参数。返回值:* 成功:返回被回收的子进程的id* 失败:-1 (所有的子进程都结束,调用函数失败)

传出参数:以这里为例,传入一个wstatus的地址,当进程退出之后,因为传入的是它的地址,wstatus的值被改变,里面的信息是退出时的状态信息。
eg:
父进程会执行的:执行printf("parent, pid = %d\n", getpid());之后,就 阻塞在wait() 那里等待有子进程结束后回收。当有子进程结束之后,获取它退出时的状态在if else语句里判断进而输出。然后因为是一个大的while(1)死循环,就阻塞到wait()等着下一次的子进程结束,直到ret=-1终止这个循环。

if(pid > 0) {// 父进程while(1) {printf("parent, pid = %d\n", getpid());// int ret = wait(NULL);int st;int ret = wait(&st);  //这一句当子进程不结束是不会执行的,会一直阻塞在这里if(ret == -1) {break;}//这里的st已经被上面改写了if(WIFEXITED(st)) {// 是不是正常退出printf("退出的状态码:%d\n", WEXITSTATUS(st));}if(WIFSIGNALED(st)) {// 是不是异常终止printf("被哪个信号干掉了:%d\n", WTERMSIG(st));}printf("child die, pid = %d\n", ret);sleep(1);}

子进程会执行的:

else if (pid == 0){// 子进程,显然这里设置的是一个死循环一直执行while(1) {printf("child, pid = %d\n",getpid());    sleep(1);       }exit(0);}

利用kill -9把这个子进程灭掉:会得到一个信息
请添加图片描述

waitpid()

与wait的区别就是这个可以设置不阻塞

#include <sys/types.h>
#include <sys/wait.h>pid_t waitpid(pid_t pid, int *wstatus, int options);参数:pid > 0的时候,就表示当指定的pid进程结束之后回收它的资源pid = 0的时候,回收当前进程组的所有子进程pid = -1的时候,回收所有的子进程,相当于 wait() 最常用pid < -1某个进程组的组id的绝对值,回收指定进程组中的子进程options:设置阻塞或者非阻塞0 : 阻塞WNOHANG : 非阻塞返回值:> 0 : 返回子进程的id0 : options=WNOHANG, 表示还有子进程活着-1 :错误,或者没有子进程了

eg: 上面这个代码的if else修改版,ret代表获取子进程的状态,-1回收当前所有子进程,并设置不阻塞,那么遇到这一句就不执行,没有要回收的时候就跳过,一直执行那个while(1)大循环里的内容,直到我们将子进程结束了,他来回收,然后执行下面if else的代码内容

int ret = waitpid(-1, &st, WNOHANG); 
if(ret == -1) {break;
} else if(ret == 0) {// 说明还有子进程存在continue;
} else if(ret > 0) {if(WIFEXITED(st)) {// 是不是正常退出printf("退出的状态码:%d\n", WEXITSTATUS(st));}if(WIFSIGNALED(st)) {// 是不是异常终止printf("被哪个信号干掉了:%d\n", WTERMSIG(st));}
http://www.dtcms.com/wzjs/407931.html

相关文章:

  • 买模板做网站百度网站名称
  • 博客可以做网站收录用的吗google关键词规划师
  • 设计公司网站欣赏软文广告营销
  • 视频类网站建设的成果东营网站建设哪家更好
  • 科凡官网seo软件推广哪个好
  • 广州市酒店网站设计南阳本地网络推广优化公司
  • 图片站手机网站怎么做yahoo引擎入口
  • 服装网站建设规划方案网站优化设计公司
  • 网站建设_seo技术支持外贸网站推广的方法
  • 山东网站建设都有那些国内十大搜索引擎排名
  • 做粉丝网站坚持
  • 没有数据怎么做网站在线查询网站收录
  • 惠州网站制作公司哪家好产品推广外包
  • 深圳 网站设计 公司网络推广seo教程
  • 贵池网站建设软文推广代理平台
  • wordpress生成软件seo优化外包顾问
  • 松岗网站的建设推销广告
  • 沈阳网站建设公司怎么样电商培训机构靠谱吗
  • 开家做网站公司有哪些开发客户的70个渠道
  • 做pos机网站有必要么百度手机助手下载安装
  • 怎么做网站建设销售百度推广竞价
  • 响应式网站案列抖音seo优化公司
  • 网站后台管理系统怎么用重庆百度推广排名优化
  • 营销网站制作教程大众网疫情最新消息
  • 网上招聘网站开发报告指数函数运算法则
  • 因脉网站建设公司怎么呀韩国精准客户信息一条多少钱
  • wordpress medium主题宁波seo推广服务电话
  • 做企业网站项目网站推广一般多少钱
  • 网站后台管理系统如何安装营销软文范例500
  • 做办公家具在哪个网站推销好苏州百度推广排名优化