求教 关于 --终止处理程序?

lgch123456 2010-10-24 01:46:39
按照ANSI C的规定(unix中的posix和XPG3这两个标准也支持这概念,并在SVR4和4.3+BSD中得到了实施),一个进程可以登记多至 32个函数,这些函数将由 exit自动调用。我们
称这些函数为终止处理程序( exit handler),并用atexit函数来登记这些函数。
这其中
1、所谓的一个进程可以登记多至 32个函数。。。
2、称为终止处理程序。。。
这两个地方怎么理解阿?
...全文
132 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgch123456 2010-10-25
  • 打赏
  • 举报
回复
多谢zclmoon。。。 给出的详细解释+例子,
AI应用技术 2010-10-24
  • 打赏
  • 举报
回复
在DEV-C++下编译的程序。。。


#include <stdio.h>
#include <stdlib.h>

void fn1()
{
printf("function 1 at exit!\n");

system("pause");
}

void fn2()
{
printf("function 2 at exit \n");

}

int main()

{
printf("this is main function \n");

atexit(fn1);

atexit(fn2);


return 0;

}
AI应用技术 2010-10-24
  • 打赏
  • 举报
回复
终止处理程序:就是main()函数返回后,有时候需要继续处理一些事宜。这些函数就是干这些事的。

也就是说,main函数返回后,我们能用atexit(),最多再调用32个函数 。。

给个例子:

#include <stdio.h>
  #include <stdlib.h>


  void exit_fn1(void)
  {
   printf("Exit function #1 called\n");
  }


  void exit_fn2(void)
  {
   printf("Exit function #2 called\n");
  }


  int main(void)
  {
   /* post exit function #1 */
   atexit(exit_fn1);

   /* post exit function #2 */
   atexit(exit_fn2);


   return 0;
  }


  输出:
  Exit function #2 called
  Exit function #1 called
dskit 2010-10-24
  • 打赏
  • 举报
回复
登记多至 32个函数

在main函数的return语句被调用后被调用,

最多可以用atexit向操作系统注册32个这样的函数。

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧