Linux - atexit()(注册终止)函数

进程终?的?式有8种,前5种为正常终?,后三种为异常终?:

1、 从main函数返回;
2 、调?exit函数;
3 、调?_exit或_Exit;
4 、最后?个线程从启动例程返回;
5 、最后?个线程调?pthread_exit;
6 、调?abort函数;
7 、接到?个信号并终?;
8 、最后?个线程对取消请求做出响应。

atexit() 函数:注册终止函数 即main执行结束后调用的函数。
它的原型是一个返回值为空,参数为返回值为空的函数指针,void atexit(void (*func)(void))。

使用时所需头部:#include<stdlib.h>

atexit()函数调用的特点:
1)、exit调用注册函数的顺序与他们登记时的顺序恰恰相反,如:登记时函数的顺序为A,B,C,D,E,F,那么exit调用它们的顺序即为F,E,D,C,B,A;

2)、同一个函数若被登记多次,则也会被调用多次。

时间: 2024-08-09 10:28:37

Linux - atexit()(注册终止)函数的相关文章

注册终止函数

当程序结束后,注册的函数还可以执行. #include <stdio.h> #include <stdlib.h> void aa1(void) { printf("aa1\n"); return; } void aa2(void) { printf("aa2\n"); return; } int main(int argc, char *argv[]) { atexit(aa1); atexit(aa2); // register func

atexit() 与 exit()函数

函数exit() 函数原型: exit()函数用于在程序运行的过程中随时结束程序,exit的参数state将会返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束.main函数结束时也会隐式地调用exit函数.exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流.关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件. exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束: exi

C语言中的程序终止函数

在C语言的标准库<stdlib.h>中提供了一些与正常或者不正常的程序终止有关的函数,下面分别对其进行简单介绍. 参考文献: [1] C和指针,P298,342 [2] C程序设计语言现代方法(第2版),P489 [3] atexit函数和exit函数的理解 1 abort() abort()函数用于不正常地终止一个正在执行的程序.函数原型如下: void abort(void) 这个函数将引发SIGABRT信号,你可以在程序中为这个信号设置一个信号处理函数,在程序终止(或干脆不终止)之前采取

iOS终止函数exit

1.   exit函数 C,C++函数exit用来终止当前程序, 函数定义如下: void exit (int status); 官方说明如下: Terminates the process normally, performing the regular cleanup for terminating programs. Normal program termination performs the following (in the same order): Objects associat

Linux下利用signal函数处理ctrl+c等信号

前言 linux下可以通过信号机制来实现程序的软中断,是一个非常有用的编程方法.我们平时在程序运行的时候按下ctrl-c.ctrl-z或者kill一个进程的时候其实都等效于向这个进程发送了一个特定信号,当进程捕获到信号后,进程会被中断并立即跳转到信号处理函数.默认情况下一个程序对ctrl-c发出的信号(SIGINT)的处理方式是退出进程,所以当我们按下ctrl-c的时候就可以终止一个进程的运行. signal函数 但是有时候我们希望我们的程序在被信号终止之前执行一些特定的收尾流程,或者我们希望我

Linux学习之“exit函数”

先看下"_exit"和"exit": exit被调用时,将冲刷所有的标准I/O流,关闭所有打开的文件描述符.在传统实现中,同时也将关闭标准I/O流.即表示标准输出FILE对象的相关存储区将被清0.而_exit不会执行这些操作. 由于父子进程共享同一地址空间,当父进程恢复运行并调用printf时,不会产生任何输出,它返回-1.这就是上一节调用_exit的原因. 然而,大多数exit的现代实现不再关闭流.因为进程即将终止,内核将关闭所有已打开的文件描述符. Linux程

linux内核系统调用--sendfile函数

在apache,nginx,lighttpd等web服务器当中,都有一项sendfile相关的配置,在一些网上的资料都有谈到sendfile会提升文件传输性能,那sendfile到底是什么呢?它的原理又是如何呢? 在传统的文件传输里面(read/write方式),在实现上其实是比较复杂的,需要经过多次上下文的切换,我们看一下如下两行代码: Java代码 read(file, tmp_buf, len); write(socket, tmp_buf, len); 以上两行代码是传统的read/wr

谢烟客---------Linux之脚本编程---函数

函数.函数名.函数定义.变量作用域.函数返回值.参数.递归 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 函数:一段具有特定功能的代码 函数名:为这段代码所取的名字,可以通过函数名完成特定功能 注意: 函数名出现的地方即为 函数对应的代码替换的地方 (变量名出现的地方即为 变量所对的值替换的地方) 函数的作用: 代码重用:过程式编程中,代码重用的重要组件. 模块化编程: 结构化编程: 函数的特点: 1)没有执行入口,只能被有

linux下转格式函数iconv段错误

今天将windows代码移植到Linux下,其中用到了Unicode转char的函数,被坑了一会,相关函数及编码格式,Linux与windows不同,有几点需要注意: 1.wchar_t 在Linux下占用4个字节,在windows下占2个字节: 2.Linux默认的文本编码方式是UTF-8:Linux终端汉字显示的设置方式:vi /etc/sysconfig/i18n: 设置LANG="en_US.UTF-8"或者LANG="zh_CN.UTF-8": 3.ico