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));