abort 强行终止一个进程,以一个非常粗野的方式来完成这个工作。

abort

强行终止一个进程,以一个非常粗野的方式来完成这个工作。

摘要

        #include <stdlib.h>
        void  abort ( void ) ;

描述

abort() 函数一出现就会引起进程的异常终止,除非信号 SIGABRT 已经被捕捉,并且信号处理函数还没有返回。

异常终止的进程应该对信号 SIGABRT 使用默认的信号处理器,它试图对每一个打开的文件流调用fclose()函数。

信号SIGABRT会被递送给调用进程,就好像使用SIGABRT参数调用raise()一样。

wait()或者waitpid()的返回状态需要指明进程是由信号SIGABRT终止的。abort()会覆盖SIGABRT的信号处理器,或者忽略这个信号。

返回值

abort()永远不会返回

错误

没有定义错误,接下来的章节提供更多资讯。

示例

没有

应用

与信号在一起的目的是提供一个可移植的方式来异常终止一个进程,此时用户 不需要关心各种实现定义的行为。

理论原型

ISO/IEC 9899:1999 标 准 要 求abort() 函 数 是 异 步 信 号 安 全的。从IEEE Std 1003.1-2001 依从 ISO C 标准, 这个要求的描述从"应该包含fclose()效果" 变成 "试图对每一个打开的文件流调用fclose()函数"。这次的修订允许向后兼容以及避免一种潜在的死锁状态。

Open Group Base Resolution bwg2002-003 已经被应用,删除下面XSI相关的章节的描述:

"在XSI兼容的系统中,异常终止的进程应该对消息编目描述符有fclose()的效果。"

  • 这里有许多原因要删除这一段:
  • * 对于异常终止的进程没有特殊的原因对消息类进行优先处理。
  • * 对于流而言,要求有abort()有fclose()的效果最主要的原因是流需要刷新输出队列。消息类此时是只读,没有必要去刷新什么。
  • fclose()对消息类描述符而言没有定义。消息类描述符是允许的,但不要求实现为一个文件描述符,同时在IEEE Std 1003.1-2001对消息类的描述中,当消息类描述符使用I/O流FILE对象的时候,不期待一个fclose()。

参考

exit() , kill() , raise() , signal() , wait() , waitpid(), the Base Definitions volume of IEEE Std 1003.1-2001,


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值