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,


你可能感兴趣的:(c,工作,kill,File,资讯,Signal)