Linux进程终止

一.返回码(错误码)

其实进程终止不外乎就以下三种情况:

在这里插入图片描述

1.strerror

我们一般关心程序为什么会失败而不关心为什么会成功。换句话说操作系统如何判断程序运行成功呢?

一般在程序末尾返回0以确定程序运行成功。而这个0会被父进程bash接收。

在这里插入图片描述

在这里插入图片描述

打印返回码

可以通过 echo $? 查看最近进程退出码。

例如将返回码改为11.

在这里插入图片描述

在这里插入图片描述

可以发现第一次返回码是11,第二次第三次就变为了0。这是因为第二三次打印的是echo命令的返回码。除了0是正确返回码,其他的都属于错误返回码,为了分辨不同错误码的意义,linux里专门有一个strerror将错误码翻译成字符串。

在这里插入图片描述

打印看看不同错误码对于的信息是怎样的

在这里插入图片描述

在这里插入图片描述

例如查找一个不存在的文件,系统会直接显示该文件不存在。

在这里插入图片描述

这是ls查找不成功返回2错误码,再有对应转化打印出来。

2.errno

errno是C语音提供的一个全局变量,它保存着最近一次执行程序的错误码。

在这里插入图片描述

打印errno就可以把最后错误的错误码打印出来,并且可以当作返回码返回给父进程。

二.exit

退出程序我们可以直接return,也可以使用exit函数。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

那么return和exit有什么区别呢?

例子

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

exit在任意位置被调用都标志着该进程直接退出。而return在其他函数中代表函数结束,在main函数里代表进程退出。

三._exit

1.简单使用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.exit和_exit的区别

注意这里打印没有\n,而对于linux来说,如果printf没有加\n,那么它会先在缓存区里,等程序执行完毕后再打印,也就是说要先休眠一秒再打印

在这里插入图片描述

在这里插入图片描述

接下来同一份代码,将exit改为_exit看看。

在这里插入图片描述

在这里插入图片描述

可以发现它 并没有将缓冲区里的数据打印出来。

在这里插入图片描述

_exit是系统接口,它会直接在系统层面将进程终止,exit是库函数先会将文件等内容刷新在调用_exit

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸蛋挞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值