验证atexit
来源:互联网 发布:java se6 for mac下载 编辑:程序博客网 时间:2024/06/04 18:07
一.源代码:
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:vim 7_3.c
#include "apue.h"
static void my_exit1(void);
static void my_exit2(void);
int main()
{
if (atexit(my_exit1) != 0)
err_sys("register exit1 error!");
if (atexit(my_exit1) != 0)
err_sys("register exit1 error!");
if (atexit(my_exit2) != 0)
err_sys("register exit2 error!");
printf("main done");
return 0;
}
static void my_exit1(void)
{
printf("call exit1\n");
}
static void my_exit2(void)
{
printf("call exit2\n");
}
二运行结果:.
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:./ateixt
main donecall exit2
call exit1
call exit1
三把return换成exit后运行结果:
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:vim 7_3.c
#include "apue.h"
static void my_exit1(void);
static void my_exit2(void);
int main()
{
if (atexit(my_exit1) != 0)
err_sys("register exit1 error!");
if (atexit(my_exit1) != 0)
err_sys("register exit1 error!");
if (atexit(my_exit2) != 0)
err_sys("register exit2 error!");
printf("main done");
exit(0);
}
static void my_exit1(void)
{
printf("call exit1\n");
}
static void my_exit2(void)
{
printf("call exit2\n");
}
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"7_3.c" 25L, 428C written
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:gcc -Wall -ggdb3 -o ateixt 7_3.c
In file included from apue.h:132,
from 7_3.c:1:
error.c: In function `err_doit':
error.c:121: warning: implicit declaration of function `vsnprintf'
error.c:123: warning: implicit declaration of function `snprintf'
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:./ateixt
main donecall exit2
call exit1
call exit1
4 换成_exit后:
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:vim 7_3.c
#include "apue.h"
static void my_exit1(void);
static void my_exit2(void);
int main()
{
if (atexit(my_exit1) != 0)
err_sys("register exit1 error!");
if (atexit(my_exit1) != 0)
err_sys("register exit1 error!");
if (atexit(my_exit2) != 0)
err_sys("register exit2 error!");
printf("main done");
_exit(0);
}
static void my_exit1(void)
{
printf("call exit1\n");
}
static void my_exit2(void)
{
printf("call exit2\n");
}
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"7_3.c" 25L, 429C written
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:gcc -Wall -ggdb3 -o ateixt 7_3.c
In file included from apue.h:132,
from 7_3.c:1:
error.c: In function `err_doit':
error.c:121: warning: implicit declaration of function `vsnprintf'
error.c:123: warning: implicit declaration of function `snprintf'
7_3.c: In function `main':
7_3.c:15: warning: control reaches end of non-void function
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:ls
7_1.c 7_3.c apue.h ateixt* error.c verify_return_value* verify_return_value_inLinux* verify_return_value_inLinux_withc99*
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:date
Mon Oct 5 20:53:42 CDT 2015
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:ll
total 108
-rw-rw-r-- 1 tingbinz tingbinz 61 Oct 5 20:01 7_1.c
-rw-rw-r-- 1 tingbinz tingbinz 429 Oct 5 20:53 7_3.c
-rw-r--r-- 1 tingbinz tingbinz 4650 Oct 5 19:58 apue.h
-rwxrwxr-x 1 tingbinz tingbinz 24290 Oct 5 20:53 ateixt
-rw-r--r-- 1 tingbinz tingbinz 2282 Oct 5 19:58 error.c
-rwxrwxr-x 1 tingbinz tingbinz 7953 Oct 5 20:02 verify_return_value
-rwxrwxr-x 1 tingbinz tingbinz 21655 Oct 5 20:08 verify_return_value_inLinux
-rwxrwxr-x 1 tingbinz tingbinz 21271 Oct 5 20:11 verify_return_value_inLinux_withc99
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:./ateixt
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:ls
5 _exit 没有输出main done 初步怀疑是缓冲区没有写到terminal 加入flash 验证。
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:vim 7_3.c
#include "apue.h"
static void my_exit1(void);
static void my_exit2(void);
int main()
{
if (atexit(my_exit1) != 0)
err_sys("register exit1 error!");
if (atexit(my_exit1) != 0)
err_sys("register exit1 error!");
if (atexit(my_exit2) != 0)
err_sys("register exit2 error!");
printf("main done");
fflush(stdout);
_exit(0);
}
static void my_exit1(void)
{
printf("call exit1\n");
}
static void my_exit2(void)
{
printf("call exit2\n");
}
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"7_3.c" 26L, 446C written
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:gcc -Wall -ggdb3 -o ateixt 7_3.c
In file included from apue.h:132,
from 7_3.c:1:
error.c: In function `err_doit':
error.c:121: warning: implicit declaration of function `vsnprintf'
error.c:123: warning: implicit declaration of function `snprintf'
7_3.c: In function `main':
7_3.c:16: warning: control reaches end of non-void function
<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:./ateixt
main done<bldc:/home/tingbinz/apue.3e/SBSCODE/7>R*_*G:
- 验证atexit
- 验证atexit()函数
- 【Linux】atexit 的验证
- 验证多线程atexit的情况
- atexit
- atexit
- atexit
- atexit
- atexit
- atexit
- atexit
- atexit
- atexit
- atexit
- atexit()
- atexit()
- atexit
- atexit()
- FI财务关键概念及关系详解
- ios9中出现的问题及解决方案
- iOS开发地图的代码和方法
- 堆排序
- C#学习日记14---引用类型 之 object类
- 验证atexit
- android---(菜单)
- 一个数组中只有0,1,2三个元素,进行排序,要求时间复杂度为O(n)
- Android学习笔记(十一)BroadcastReceiver动态注册、注销示例
- 关于sqlite3 not found
- KL距离的应用一(转)
- mongoDB高级篇①】聚集运算之group,aggregate
- DLX精确覆盖 hdu4069 Squiggly Sudoku
- 读写锁