进程终止的5种方式 q 正常退出 q 从main函数返回 q 调用exit q 调用_exit q 异常退出 q 调用abort 产生SIGABOUT信号 q 由信号终止 ctrl+c SIGINT |
|
eg: 区别1:清空缓冲区的操作 int main(void) { printf("hello itcast"); //return 0; //exit(0); fflush(stdout); _exit(0); } 区别2:exit会调用终止处理程序 有关终止处理程序 |
q atexit可以注册终止处理程序,ANSI C规定最多可以注册32个终止处理程序。 q 终止处理程序的调用与注册次序相反 q man atexit int atexit(void (*function)(void)); man 2 atexit |
总结exit与_exit区别 1)_exit是一个系统调用,exit是一个c库函数 2)exit会执行清楚I/O缓存 3)exit会执行调用终止处理程序 |