开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:注册进程退出清理函数 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/10994
注册进程退出清理函数
进程退出清理
进程在退出前可以用 atexit 函数注册退出处理函数
#include<staio.h>
Int atexit(void (*function )(void));
它是包含一下头文件的,说明这个函数时一个库函数,这个函数返回值是整型的,参数是函数型的。*加变量被括号起来的一个函数指针,意思是调用atexit函数时传一个函数地址出来,等进程结束之后来执行函数。
功能:
注册进程正常结束前调用的函数,进程退出执行注册函数。
参数:
Function:进程结束前,调用函数的入口地址。一个进程中的可以多次调用atexit函数注册清理函数,正常结束前调用函数的顺序和注册时的顺序相反。意思时最后注册的先于之前的
例子:04.atexit.c
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
void clear _fun1(void)
{
printf(“perform clear fun1 \n”);
}
void clear _fun2(void)
{
printf(“perform clear fun2\n”);
}
void clear _fun1(void)
{
printf(“perform clear fun3\n”);
}
Int main(int argc.char *argv[])
{
atexit(clear_fun1);
atexit(clear_fun2);
atexit(clear_fun3);
print(“process exit 3 sec later!!!\n”);
sleep(3);
return 0;
}
进程结束后会调用上面的三个函数,fun3,fun2,fun1,先注册的而后执行,后注册的先执行
程序运行效果:
可以看到沉睡三秒后,才开始执行。并且执行的顺序是 fun3fun2fun1 的。
