1、abort
定义:
#include
void abort(void);
作用:强行终止程序 (异常终止);如果当前shell不限制ulimit,将会core dump。
2、assert宏
原型:
#include
void assert(int expression);
作用:计算 expression的值,若其返回0(假),则向 stderr打印出错信息,并调用 abort终止程序。
使用注意事项:assert一般在开发阶段用于调试。为防止定义NEBUG后assert被禁用,最好不要直接向assert进行输入,而是如下所示:
p = malloc (sizeof (char) *100);
assert(p);
3、exit
原型:
#include
void exit(int status);
作用:返回一个状态值给操作系统,status在stdlib.h中定义了EXIT_SUCCESS和EXIT_FAILURE。
4、atexit
原型:
#include
int atexit(void (*function)(void));
作用:注册一个函数,这个函数可以定义一些操作,用来在程序正常退出时执行之。
atexit注册成功则返回0,否则返回1;可以用“,”隔开注册多个函数,执行顺序为最左边的最后执行。
5、errno变量:
定义: #include ;
int errno;
作用:全局变量,Linux系统调用与大部分库函数设置该值,errno.h定义了其值对应的错误。例如ENOENT代表No such file or directory等。
函数perror可以打印相应的出错信息。
注意事项:很多函数返回并设置errno后并不会把之清0,如果调用一个可能在出错时设置errno的库函数的时候,最好先手动把errno清零。
6、strerror
原型:
#include
char *strerror(int errnum);
作用:把errno转换成标准的出错信息。例如: ps = strerror(ENOENT);
则指针ps指向的字符串为"No such file or directory "等。
7、perror
原型:
#include
#include
void perror(const char *s);
作用:打印s所指的字符串和标准出错信息,相当于
printf("%s: %s\n", *s, strerror(errno));