本文主要是介绍exit和atexit,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
通用工具函数库stdlib.h提供了除从main函数中正常返回之外的其他一些终止程序运行的方法,如exit和atexit。exit强制终止程序的运行,就像正常结束一样,当检测到一个输入错误或者欲处理的文件无法打开时,常常使用exit来结束程序。atexit注册一个函数,这个函数必须在程序成功结束时调用–要么程序执行到了main函数末尾,要么调用了exit函数,使程序结束。
atexit接收指向欲注册函数的指针(即函数名)作为实参。这个在程序结束时被调用的函数不能有实参,也不能返回任何一个值,最多能注册32个在程序结束时被调用的函数。
exit函数接收一个实参。这个实参通常是符号常量EXIT_SUCCESS或EXIT_FAILURE。如果使用EXIT_SUCCESS来调用exit函数,一个系统定义的,代表程序成功结束的数值将返回给主调环境。如果使用EXIT_FAILURE来调用exit函数,将返回一个系统定义的,代表程序未成功的数值。调用exit后,由 atexit注册的所有函数,将按照与它们注册相反的顺序,依次被调用。所有与程序相联系的输入、输出流将被处理完,然后关闭,控制也返回到主调环境中。
示例如下:
#include <stdio.h>
#include <stdlib.h>#define DEBUG 0void print1();
void print2();
void print3();int main(int argc, char const *argv[])
{atexit(print1);atexit(print2);atexit(print3);if (DEBUG == 1)exit(EXIT_SUCCESS);elseexit(EXIT_FAILURE);return 0;
}void print1() {printf("This is print1.\n");
}
void print2() {printf("This is print2.\n");
}
void print3() {printf("This is print3.\n");
}
注意,不论exit参数是什么,函数均调用atexit注册的函数。
这篇关于exit和atexit的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!