一.源代码:
<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: