您的位置:首页 > 其它

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

2012-04-26 08:52 337 查看


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,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐