Linux进程终止

进程终止

  • 一.返回码(错误码)
    • 1.strerror
    • 2.errno
  • 二.exit
  • 三._exit
    • 1.简单使用
    • 2.exit和_exit的区别

一.返回码(错误码)

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

Linux进程终止_第1张图片

1.strerror

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

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

Linux进程终止_第2张图片

Linux进程终止_第3张图片

打印返回码

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

例如将返回码改为11.

Linux进程终止_第4张图片

Linux进程终止_第5张图片

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

Linux进程终止_第6张图片

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

Linux进程终止_第7张图片

Linux进程终止_第8张图片

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

Linux进程终止_第9张图片

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

2.errno

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

Linux进程终止_第10张图片

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

二.exit

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

Linux进程终止_第11张图片

在这里插入图片描述

Linux进程终止_第12张图片

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

例子

Linux进程终止_第13张图片

Linux进程终止_第14张图片

Linux进程终止_第15张图片

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

三._exit

1.简单使用

Linux进程终止_第16张图片

Linux进程终止_第17张图片

Linux进程终止_第18张图片

2.exit和_exit的区别

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

Linux进程终止_第19张图片

在这里插入图片描述

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

Linux进程终止_第20张图片

在这里插入图片描述

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

Linux进程终止_第21张图片

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

你可能感兴趣的:(Linux系统,linux,运维,服务器)