`
lilisalo
  • 浏览: 1108448 次
文章分类
社区版块
存档分类
最新评论

出错处理函数abort、exit、atexit、strerror

 
阅读更多
出错处理函数abort、exit、atexit、strerror. . .2010-06-30 22:43摘要:本文详细讲述了几个出错处理的函数abort、exit、atexit、strerror函数的使用方法,并给出来具体的示例程序。 函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 头文件:#include <stdlib.h> 说明:abort函数是一个比较严重的函数,当调用它时,会导致程序异常终止, 而不会进行一些常规的清除工作,比如释放内存等。 程序例: #include <stdio.h> #include <stdlib.h> int main(void) { puts( "About to abort..../n" ); abort(); puts( "This will never be executed!/n" ); exit( EXIT_SUCCESS ); } [root@localhost error_process]# gcc abort.c [root@localhost error_process]# ./a.out About to abort.... 已放弃 ----------------------------------- 头文件 #include<stdlib.h> 定义函数 void exit(int status); exit()用来正常终结目前进程的执行,并把参数 status 返回给父进程, 而进程所有的缓冲区数据会自动写回并关闭未关闭的文件。 它并不像abort那样不做任何清理工作就退出,而是在完成所有的清理工作后才退出程序。 ---------------------------------------- atexit(设置程序正常结束前调用的函数) 头文件 #include<stdlib.h> 定义函数 int atexit (void (*function)(void)); 返回值 如果执行成功则返回 0,否则返回-1,失败原因存于 errno 中。 atexit()用来设置一个程序正常结束前调用的函数。当程序通过调用 exit()或从 main 中返回时,参数 function 所指定的函数会先被 调用,然后才真正由 exit()结束程序。 很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就 是用atexit()函数来注册程序正常终止时要被调用的函数。 atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。atexit()的函数原型是:int atexit (void (*)(void)); 在一个程序中最多可以用atexit()注册32个处理函数,这些处理函数的调用顺序与其注册的顺序相反,也即最先注册的最后调用,最后注册的最先调用。 #include <stdlib.h> #include <stdio.h> void my_exit(void) { printf( "Before exit..../n" ); } int main(void) { atexit( my_exit ); return 0; } [root@localhost error_process]# gcc atexit.c [root@localhost error_process]# ./a.out Before exit.... ----------------------------------------------------- strerror(返回错误原因的描述字符串) 头文件 #include<string.h> 定义函数 char * strerror(int errnum); strerror() 用来依参数 errnum 的错误代码来查询其错误原因的描述字符串,然后将该字符串指针返回。 这时如果把 errno 传个strerror,就可以得到可读的提示信息,而不再是一个冷冰冰的数字了。 返回值 返回描述错误原因的字符串指针。 #include <string.h> #include <stdio.h> int main(void) { int i; for ( i=0; i <div class="share_buttons" id="sharePanel"></div> <div class="article_next_prev"> <li class="prev_article"> <span>上一篇:</span><a href="http://blog.csdn.net/crcr/article/details/5722017">杂谈计算机图书翻译</a> </li> <li class="next_article"> <span>下一篇:</span><a href="http://blog.csdn.net/crcr/article/details/5722210">exit函数的头文件问题</a> </li> </div> </stdio.h></string.h></string.h></stdio.h></stdlib.h></stdlib.h></stdlib.h></stdlib.h></stdio.h></stdlib.h>
分享到:
评论

相关推荐

    C++ 中exit(),_exit(),return,abort()函数的区别

     exit()和_exit()函数都可以用于结束进程,不过_exit()调用之后会立即进入内核,而exit()函数会先执行一些清理之后才会进入内核,比如调用各种终止处理程序,关闭所有I/O流等,我建议直接在Linux的终端中查看man...

    exit和abort及return的区别

    介绍C语言代码中的exit和abort及return的区别 exit() 结束当前进程/程序,在整个程序中,只要调用 exit ,就结束。 return() 是当前函数返回,当然如果是在主函数 main, 自然也就结束当前 进程了,如果不是,那就是...

    -C++参考大全(第四版) (2010 年度畅销榜

    26.23 strerror函数 26.24 strlen函数 26.25 strncat函数 26.26 stmcmp函数 26.27 strncpy函数 26.28 strpbrk函数 26.29 strrchr函数 26.30 strspn函数 26.31 strstr函数 26.32 strtok函数 26.33 strxfrm函数 26.34 ...

    delphi函数详解.rar

    Abort 函数 引起放弃的意外处理 Abs 函数 绝对值函数 AddExitProc 函数 将一过程添加到运行时库的结束过程表中 Addr 函数 返回指定对象的地址 AdjustLineBreaks 函数 将给定字符串的行分隔符调整为CR/LF序列 Align ...

    详解C语言中return与exit的区别

    exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile&#40;&#41;创建的临时文件。exit是结束一个进程,它将删除...

    php计划任务之ignore_user_abort函数实现方法

    本文实例讲述了php计划任务之ignore_user_abort函数实现方法。分享给大家供大家参考。具体分析如下: PHP 不会检测到用户是否已断开连接,直到尝试向客户机发送信息为止,简单地使用 echo 语句无法确保信息发送,参阅 ...

    C语言函数库手册 按函数功能快速查询

    void abort() 此函数通过调用具有出口代码3 的_exit 写一个终止信息于stderr,并异常终止程序。无返回值 int exec…装入和运行其它程序 ...... 转换子程序,函数库为math.h、stdlib.h、ctype.h、float.h char *ecvt...

    Software caused connection abort: recv failed

    Software caused connection abort: recv failed

    Delphi 跳出循环的几种方法

    Delphi中break,exit,abort跳出循环的比较 exit: 退出函数体 abort: 遇到异常,安静处理,就是不显示不提示 break: 退出当前循环体,包括for ,while, repeat等循环体 continue: 结束循环内的本次处理,继续从循环体的...

    C语言函数及相关知识

    C语言函数及相关知识 函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 程序例: #include #include &lt;stdlib.h&gt; int main(void) { printf("Calling abort()\n"); abort(); return 0; /* This ...

    UNIX环境高级编程部分

    7.3.2 atexit函数 7.4 命令行参数 7.5 环境表 7.6 C程序的存储空间布局 7.7 共享库 7.8 存储器分配 7.9 环境变量 7.10 setjmp 和longjmp函数 7.10.1 自动, 寄存器和易失变量 7.10.2 自动变量的潜在问题 7.11 ...

    UNIX环境高级编程

    7.3.2 atexit函数 7.4 命令行参数 7.5 环境表 7.6 C程序的存储空间布局 7.7 共享库 7.8 存储器分配 7.9 环境变量 7.10 setjmp 和longjmp函数 7.10.1 自动, 寄存器和易失变量 7.10.2 自动变量的潜在问题 7.11 ...

    PHP ignore_user_abort函数详细介绍和使用实例

    本函数返回 user-abort 设置的之前的值(一个布尔值)。 int ignore_user_abort ([ string $value ] )  参数setting描述:可选。如果设置为 true,则忽略与用户的断开,如果设置为 false,会导致脚本停止运行。 ...

    Laravel开发-laravel-or-abort

    Laravel开发-laravel-or-abort 向类中添加orabort函数的特性

    c语言函数大全包括所有c函数

    函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 程序例: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main(void) { printf("Calling abort()\n"); abort(); return 0; /* This is ...

    Delphi函数参考手册

    abort 函数 引起放弃的意外处理 abs 函数 绝对值函数 addexitproc 函数 将一过程添加到运行时库的结束过程表中 addr 函数 返回指定对象的地址 adjustlinebreaks 函数 将给定字符串的行分隔符调整为cr/lf序列...

    IT行业中必备技能之UNIX最佳学习资料

    7.3.2 atexit函数 124 7.4 命令行参数 125 7.5 环境表 126 7.6 C程序的存储空间布局 126 7.7 共享库 127 7.8 存储器分配 128 7.9 环境变量 130 7.10 setjmp 和longjmp函数 132 7.10.1 自动、寄存器和易失变量 134 ...

    node-abort-controller:基于EventEmitter的Node.JS的AbortController Polyfill

    节点异常终止控制器基于EventEmitter的Node.JS的AbortController Polyfill用法import fetch from 'node-fetch'import AbortController from 'node-abort-controller'const controller = new AbortController ( )...

Global site tag (gtag.js) - Google Analytics