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

微网站怎样做南通建设企业网站

微网站怎样做,南通建设企业网站,自己做平台网站,云台山旅游景区网站建设内容文章目录 进程退出场景进程退出码strerrorerrno浅谈进程异常exit && _exit 进程退出场景 代码运行完毕,结果正确代码运行完毕,结果不正确代码异常 进程退出码 我们写的C/C的代码,main函数每次都需要返回0,而这个return…

在这里插入图片描述

文章目录

    • 进程退出场景
    • 进程退出码
    • strerror
    • errno
    • 浅谈进程异常
    • exit && _exit

进程退出场景

  • 代码运行完毕,结果正确
  • 代码运行完毕,结果不正确
  • 代码异常

进程退出码

我们写的C/C++的代码,main函数每次都需要返回0,而这个return 0,就代表这进程的退出码,表征进程运行结果是否正确,通常0表示正确。

int main()
{printf("一个进程\n");return 0;	//0->success
}

这个退出码会被父进程(bash)接收,我们可以使用指令==echo $?==拿到上一个进程的退出码,在命令行中,所以指令的父进程都是bash

就好比,谁会关心一个孩子的成长呢?那肯定是他们的父母

而对应正确的退出码,只有一个,那就是0,因为成功了,并不会详细询问;而运行结果不正确,则需要返回对应的退出码,告诉父进程,是什么原因失败了。

例如我们考了班上的第一名,家长会说,儿子(小甜心)真棒!走,带你去吃好吃的;

而我们如果考了倒数,家长则会问为什么只考了这么点分?是什么原因?

image-20231026114604363

所以这个main函数的返回值,本质上表示进程运行完成时是否运行正确;如果不正确,就用不同的数字表示不同的错误原因。

strerror

不过这些数字的退出码,是给计算机看的,我们并不懂,所以需要将这些退出码转换成对应的错误信息,所以在Linux中有一个接口strerror,将退出码转换成字符串。

image-20231026115316835

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>                                                                                                                                                                 
int main()
{for(int i =0;i<150;i++){printf("%d: %s\n",i,strerror(i));}return 0; //进程的退出码,表征进程的运行结果是否正确  0-> success
}

通过strerror接口,我们就能查看到各个退出码所对应的信息。例如我们main函数返回的0

image-20231026133935136

其实本质上,父进程接收退出码,是为了给用户返回错误信息,已便用户做出相应的措施

errno

C语言也提供了一个接口errno,这里能返回最新一个错误码

image-20231026141051689

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
int main()
{char* ch = (char*)malloc(1024*1024*1024*10);int ret = 0;if(ch == NULL)                                                                      {printf("malloc error ,%d -> %s\n",errno,strerror(errno));ret = errno;}else{printf("malloc success\n");}return ret;
}

浅谈进程异常

当进程退出异常的时候,这时候的退出码意义并不是很大。

比如说,在一场考试过程中,有人作弊被抓到,这时候,他就属于考试异常,那么他的这个成绩也就无关紧要了。

这时候对于老师或者家长,就要知道,这个异常的原因,而不是考试的成绩

我们对指针的解引用操作,或者进行除0操作,都会导致程序异常,这些都有对应的信号,系统转给我们的进程,让其退出

int main()
{int* p;*p = 10;	//对野指针解引用int a = 1;a/=0;	//除0错误return 0;
}

image-20231026163534011

我们可以通过验证来发现,但我们进程没有发生错误的时候,我们主动给这个进程发信息,来模拟这个除零错误

kill-8

exit && _exit

要终止一个进程,我们可以使用C语言提供的接口exit,在之前也见过,但我们这个exit()括号里面的数字,都不知道怎么填,一般都填的-1,有了本次知识的了解,我们就能知道,这个括号里面填的就是进程的退出码。

image-20231026192418644

exit在**main函数**里面和return是等价的,都可以返回进程的退出码;

而在某个函数里面,exit也是表示当前进程直接退出,而return则指标是退出当前函数;

使用,exit在任何地方都表示进程退出,而return只是在main函数里面表示进程退出

系统也提供了一个接口_exit,它的功能也是直接终止进程,参数和返回值和exit一样

image-20231026193208069

exit_exit的区别:

此篇文章之前提到过,关于缓冲区的概念,不了解的可以先看一下此篇文章:Linux进度条小程序_请揣满RMB的博客-CSDN博客

我们来看这4段代码的执行结果:

image-20231026204718435

运行发现调用exit退出进程,会刷新缓冲区之后再终止进程;而_exit是直接退出进程。

其实本质上exit在调用的时候,会先执行用户定义的一些清理函数,然后刷新缓冲区,最后再调用_exitexit_exit是一个调用与被调用的关系。

image-20231026205515574

这里我们也可以得出一个结论:缓冲区绝对不在内核区

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

相关文章:

  • 山东饰品行业网站制作企业年金是什么意思
  • 企业做网站的注意事项深圳人力资源网求职
  • 建设个人网站多少钱建设厅网站合同备案在哪里
  • 坪洲网站建设开发一个软件的流程是什么
  • asp.net网站开发详解自己免费做网站(三)
  • 温州百度搜索网站排名做网站哪个公司好
  • 网站流量如何增加中国建设银行的业务范围
  • 电子商务网站的建设wordpress可视化插件
  • 产品网站建设公司哪家好网站建设路由器怎么设置
  • 门户网站有什么特点网站备案抽查
  • 网站建设杭州哪家便宜网页版梦幻西游探案寻奇攻略
  • 西安知名网站建设公司排名上杭网站制作
  • 环保类网站建设如何做网站数据库
  • 做翻页电子书的网站网站建设是无形资产
  • 前端学校网站开发视频排名好的网站建设
  • 成都免费网站制作个人博客免费模板
  • 网站建设工作室起名辽宁省工程造价信息网官网
  • 网络营销课程性质网站seo分析报告案例
  • NET网站开发工程师网站招聘往国外卖货的平台
  • 简述网站开发的步骤怎么制作网站软件下载
  • 网站制作带优化企业官方网站模板下载
  • 域名可以做网站吗昆明建设网站哪家好
  • 查找邮箱注册过的网站用网址进入的游戏
  • 深圳优化网站公司优化的近义词
  • 正规的网站优化推广公司软件著作权申请费用
  • 广州建设银行保安招聘网站庆阳网红
  • 做网站 空间湖南关键词优化推荐
  • 网络推广有哪些网站网页架构人才培训中心
  • 淮北市建设安全监督站网站asp网站服务器架设
  • 重庆建网站公司朋友圈网站怎么做的