按照ISO C的規定,一個進程能夠登記32個終止處理程序(exit handler),這些終止處理程序(即函數)將由exit自動調用,在exit自動調用以前,須要使用atexit函數登記這些函數。函數
如下是各實現提供的終止處理程序個數限制:spa
限制 | FreeBSD 8.0 | Linux 3.2.0 | Mac OS X 10.6.8 | Solaris 10 |
ATEXIT_MAX | 32 | 2147483647 | 2147483647 | 無限制 |
atexit函數原型:code
#include<stdlib.h>
int atexit(void (*func)(void));
其中atexit的參數是一個函數地址,該函數無需向它傳遞參數,也不指望返回一個值。exit調用終止處理函數的順序和atexit登記的順序相反,若是一個函數被屢次登記,也會被屢次調用。blog
注:main函數返回一個整型值與用該值調用exit是等價的,即:
進程
exit(0);
等價於原型
return 0;
但與return不一樣的是,exit()可在非main函數中結束程序/進程it