赞
踩
一般情况下进程正常退出返回0,异常退出则返回相应的退出码。而一个程序一般的退出场景有以下三个:
常见的进程退出方式有正常结束和异常退出
不管进程是上述什么方法退出的,系统最后都会执行内核中的一段相同代码,这段代码用来关闭进程所打开的文件描述符,用来释放它所占用的内存和其他相关的资源。
首先我们来介绍以下退出码,我们知道程序如果出错,都会返回一个退出码,那么这些退出码是什么呢?
exit的函数中可以让我们使用的错误码只有0~255(八个比特位,退出码存放在第八到第十六位),其他位被标记了别的信息。比如程序是否正常退出,如果是异常退出,退出码它会指明是什么原因导致异常退出的。
是系统调用,直接返回内核,没有多余的东西。
在Linux下我们man _exit
会得到关于_exit函数的手册信息,里面详细的包含了它的各种信息,我们来看一下它的简单信息:
#include <unistd.h>
void _exit(int status);
#include <stdlib.h>
void _Exit(int status);
我们在Linux下使用man 3 exit即可得到exit函数的相关信息。
exit函数原型为:
#include <stdlib.h>
void exit(int status);
其中的参数status和_exit中的参数是一样的,都表明了进程的终止状态。
第一件事刷新输出缓冲区,接着在做一大堆事情,最后调用_exit函数,准确来说是下面三个事情。
我们在Linux下分别写下如下代码
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
printf("haha");
_exit(0);
}
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
printf("haha");
exit(0);//此处与上面的代码不一样
}
结果如下:
我们看到如上代码只是调用的函数不相同,因为exit函数由于会刷新缓冲区,所以会在屏幕上显示出来,而_exit函数直接进入内核,所以不会显示出来内容。
return退出是一种非常常见的退出方式,我们一般执行return n即等于执行exit(n),这时因为我们在main运行结束的时候会将main的返回值当作exit的参数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。