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

网站建设文化策划书建设工程信息网官网新网站

网站建设文化策划书,建设工程信息网官网新网站,欧洲外贸服务器,打通WordPress和微信公众号文章目录 进程控制(一)进程终止运行正常退出码 运行异常进程正常/异常总结 进程控制(一) 在前文中,我们初步了解了进程的概念,以及通过fork函数来创建子进程,并对于为什么运行一个程序&#xf…

文章目录

  • 进程控制(一)
  • 进程终止
    • 运行正常
      • 退出码
    • 运行异常
    • 进程正常/异常总结


进程控制(一)

在前文中,我们初步了解了进程的概念,以及通过fork函数来创建子进程,并对于为什么运行一个程序,只要fork就会有两个进程分别执行不同的代码部分,了解了父子进程公用同一代码以及数据。

下面我们进一步了解进程,初步认识之后,就要深入探讨,如何对于控制进程。

进程终止

进程终止的方式有三种:

  • 代码运行完毕,结果正确
  • 代码运行完毕,结果不正确
  • 代码异常,终止程序

对于上述三种情况,我们分别进行考虑,总体上依据是否运行完毕分为两类,运行正常以及运行异常终止。

运行正常

运行正常,分为两种,结果正确/结果不正确,对于运行结果是否正确,我们引入了退出码这一概念。

退出码

退出码是指在运行一个程序(进程)之后返回的一个int类型的数字,比如main函数中,我们常用的return 0;表示的就是返回0,0即为退出码,表示该程序结果运行正常,结果正确,其他数字表示结果不正确,退出码是正整数

正常终止进程

  • 从main函数通过return返回
  • 调用exit
  • 调用_exit

exit函数

exit函数的调用,可以使得进程直接终止,并返回其参数,使用格式为exit(int)

echo $?可以得到最近一次进程的退出码

status 定义了进程的终止状态,父进程通过wait来获取该值

//exit函数
//#include<unistd.h>  在unistd.h库中
//void exit(int status);  其中status表示状态码,状态码有八位可以被父进程所使用,如执行exit(-1) 
//echo $?  得到结果为255
#include<unistd.h>
#include<iostream>
using namespace std;
void func()
{cout << "Hello World!" << endl;exit(1);//此时,结束func函数,返回到main函数cout << "Hello World!" << endl;
}
int main()
{func();return 0;
}//main函数和func函数运行,实际上可以认为是两个进程在运行,main好比是func函数的父进程,func通过exit终止程序,返回码为1,交给main函数

在这里插入图片描述

_exit函数

_exit函数和exit函数的差别不大,exit的执行最终也会调用_exit,在此之前先执行以下几个方面:

  1. 执行用户定义的清理函数
  2. 冲刷缓冲区,关闭流
  3. 执行_exit函数

在这里插入图片描述

上述内容说明,_exit为系统调用接口,是直接对于操作系统内核进行操作,不会冲刷缓冲区,说明缓冲区一定不在内核中,不然_exit也会冲刷缓冲区。

在这里插入图片描述

return

return是最为常见的一种退出进程的方法,执行return n相当于exit(n),main函数执行完毕后,会将返回值作为exit的参数退出进程。

#include<iostream>
using namespace std;int main()
{//执行程序之后,运行到下面阶段return 0;//返回0,0为退出码,表示结果正常
}
  1. 如果是我们自己为了做题,或者学习的话,退出码不需要处理,那就任意退出码都可以
  2. 当在项目中,我们需要使用到父子进程时,在子进程结束后进入僵尸状态(Z)需要父进程来接收子进程的信息,其中就有退出码,用来表示程序是否正常运行。
  3. main函数的返回值,本质上是指进程运行完成时,是否是正确的结果,如果不是,可以使用不同的数字,来表示不同的出错码。

**main函数return返回,说明进程正常终止,这也是为什么在初学c/c++时,main函数默认return 0 **

运行异常

运行异常,表现为进程在运行时崩溃,中途终止进程,显示异常信息,如除零异常,没有查找到文件异常

比如使用cat func命令,如果当前目录下没有func目录或者文件,会显示异常

在这里插入图片描述

上图表示为,没有找到func文件或者目录,这是一种异常信息

对于进程的终止,如何杀死进程,我们了解kill -9(九号信号)来进行杀死进程,来控制进程,所以我们可以知道,实际上进程异常是运行程序后,检测到异常,然后操作系统通过kill命令发射相应的信号,来显示报错信息,以及结束进程。

通过kill -l命令可以显示所有信号

在这里插入图片描述

进程正常/异常总结

  1. 进程正常运行,会有两种情况,结果正确/不正确,正确结果不用管,但是为什么会出现不正确的结果,又如何去知道不正确的原因呢?
  2. 通过退出码的形式来表示结果正确/不正确,0表示结果正确,其他数字表示为结果不正确,不同数字对应不同的错误信息(错误原因)
  3. 代码终止,即代码异常,本质上是代码并没有跑完,中途崩溃,那么这样就不会经过退出码,直接就崩溃了,如何显示异常信息呢?
  4. 异常就不会有退出码,也就是说,如果程序异常就不需要考虑退出码,且异常的本质是进程收到了对应的信号,在kill -l命令中,我们可以看到所有的信息,进程异常会将对应的信号存储下来,供父进程接收。

上述提到的退出码以及异常信号,都会作为信息,被父进程回收处理。

退出码,在系统中有对应的一套体系,通过strerror(int)函数来得到对应退出码表示的信息

#include<iostream>
using namespace std;
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
int main()
{//模拟实现错误信息的输出for(int i=0;i<200;i++){printf("%d: %s\n",i,strerror(i));}return 0;
}

在这里插入图片描述

http://www.yayakq.cn/news/19204/

相关文章:

  • 做网站推广也要营业执照吗校园网站建设结论
  • co域名哪些网站wordpress添加首页导航
  • 网站定制开发哪家做的好seo网站优化服务
  • 易企互联网站建设wordpress讨论吧
  • 低价企业网站搭建wap网站平台
  • 网站关键词标题怎么写wordpress 添加phpmyadmin
  • 防内涵吧网站源码渭南专业做网站
  • 网上做调查赚钱的网站有哪些江门做网站费用
  • 龙城建设网站公司wordpress固定链接403
  • 便捷网站建设费用dede网站架设教程
  • 建一个动物网站怎么做营销策划方案1500字
  • 怎么压缩网站wordpress模板推荐
  • iis 没有新建网站建设通手机版
  • 电影网站源码怎么做的wordpress 评论界面
  • app网站建设工作师wordpress中文分类问题
  • iis 网站 500网站会过期吗
  • 南充做网站电话凡科代理建站登录
  • 最新网站信息长沙网站制作教程
  • 学字体网站交易网站seo怎么做
  • 深圳商城网站设计多少钱官方静态网站模板
  • 青海建设工程云网站潍坊建设局官方网站
  • dw网站设计与制作网站代码优化
  • 使用php做的学校网站吗vs做网站标签输出语言
  • 社交模板网站建设镇江网站建设设计
  • 山东省住房和建设厅网站4k视频素材网站
  • 网站建设鼠标移动变颜色河北省住房和城乡建设厅网站打不开
  • 网站建设 步骤抖音电商具体是做什么的
  • 多平台网站建设了解wordpress
  • 苏州区建设局网站首页第一次跑业务怎么找客户
  • 北京企业建设网站制作视频网站信息资源建设