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,
相关文章推荐
- C程序完成:父进程创建一个子进程,父进程对子进程设置一个报警信号,然后父进程等待子进程的结束,如果此时报警信号先到,就终止子进程。
- 7-2 一帮一(10 分) “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名
- abort 异常终止一个进程 _exit终止程序
- exit和_exit 进程终止有5种方法: 1正常终止 (1)从main函数返回 (2)调用exit (3)调用_exit 2异常终止 (1)调用abort (2)由一个信号来终止 exi
- C++实现线程同步的几种方式 线程同步是指同一进程中的多个线程互相协调工作从而达到一致性。之所以需要线程同步,是因为多个线程同时对一个数据对象进行修改操作时,可能会对数据造成破坏,下面是多
- GIT 版本控制软件的常用命令记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝。接下来,对这些文件作些修改,在完成了一个阶段的目标和使用方法
- 学习笔记:openwrt listen & send 合并在同一个进程准备用于IPC源码(epoll_fd 在 send event 完成后关闭导致listen终止的问题)
- 页面中iframe中嵌入一个跨域的页面,让这个页面按照嵌入的页面宽高大小显示的方式;iframe嵌套的页面不可以编辑的问题解决方案
- 电路板焊接完成发现CPU没有工作,需要从哪些方面考虑解决这个问题?
- 大家用了这么久的.net有没有发现C#中可以用中文变量呀!!可用这个特性来彻底改变程序的易读性(搞笑).但其实有一个非常独特的用处的
- nginx是以多进程的方式来工作的
- 要求接收一个数字,程序会将这个数字以二进制方式打印
- C语言中进程的终止方式
- C# 强行停止本地一个进程
- 这是一个文字游戏?“这个工作你们部门牵头xx”
- 进程的5种终止方式
- 20_Android中apk安装器,通过WebView来load进一个页面,Android通知,程序退出自动杀死进程,通过输入包名的方式杀死进程
- 一个页面从输入URL到页面加载显示完成,这个过程发生了什么?
- 2012年3月份工作总结 ~ 之 ~ PDF 作业对应 (虽然这个作业没有什么意思,但是非常值得总结)
- 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)。