exit函数使用说明
摘要:本文描述的是Linux手册页(3.73版本)中exit()函数的使用说明,使用exit()函数正常终止一个进程.原文来自:http://www.kernel.org/doc/man-pages/.
NAME
exit - 正常终止一个程序
SYNOPSIS
#include <stdlib.h>
void exit(int status);
DESCRIPTION
exit()函数用于正常终止一个进程,参数status&0377作为终止状态,返回给父进程.
调用exit函数时,通过函数atexit或on_exit注册的所有函数(终止处理程序)都会被调用,且调用的顺序刚好与注册时候的顺序相反.(在这些终止处理程序中有可能是为了在程序终止时执行一个额外的处理.新注册的函数会被添加到注册队列的头部,然后等待被调用.)如果这些终止处理程序没有返回退出(比如:_exit函数或kill a signal),那么剩余的终止处理程序将不会被调用.exit函数也将被抛弃终止.如果同一个函数如若注册多次,则也会被调用多次.
调用exit函数后,所有的IO流都会被关闭,由tmpfile创建的文件也会被移除.
在C标准中设定了两个常量,EXIT_SUCCESS和EXIT_FAILURE,用来作为exit函数的参数,分别指出进程是正常退出还是异常终止.
RETURN VALUE
exit函数没有返回值.
ATTRIBUTES
多线程
函数exit使用了一个不受保护的全局变量,所以它不是安全的线程.
CONFORMING TO
SVr4, 4.3BSD, POSIX.1-2001, C89, C99.
NOTES
如果终止处理函数调用了exit或longjmp函数,那发生的后果将是无法预知的.注意,调用execve函数将移除所有终止处理程序.
相对于0和非0值,用EXIT_SUCCESS和EXIT_FAILURE更加简易明.特别的,VMS采用了不同的规定.
BSD尝试将exit函数规范化.
调用exit函数,退出进程后,终止状态必须要传递给父进程.这时,会发生三种情况:如果父进程设置了SA_NOCLDWAIT标志位(SA_NOCLDWAIT:使父进程在它的子进程退出时不会收到 SIGCHLD 信号,这时子进程如果退出也不会成为僵尸进程.) 或者是将信号SIGCHLD交给SIG_IGN处理(当一个进程正常或异常终止时,内核就向父进程发送SIGCHLD信号,如果父进程不处理,交给SIG_IGN,则相当于父进程忽略子进程的生死.)子进程的终止状态会被抛弃.如果父进程正在等待取得子进程结束的终止状态.在这两种情况下,子进程将会马上终止,释放资源.如果一个已经终止,但父进程尚未对其进行善后处理的进程,被称之为僵死进程(进程已经终止,但是还没释放所占用的资源).所以父进程可以通过调用wait函数来等待处理退出的子进程.
如果系统支持信号机制,可以通过信号传递给父进程,但是如果父进程设置了SA_NOCLDWAIT标志位,父进程将无法收到信号.
如果进程是回话首进程且控制着一个控制终端,该进程终止后,该回话组的所有进程都会收到一个SIGHUP信号,同时终端也将会被释放,这些进程或终端可以加入到别的进程组.
如果退出进程使得该组其他进程成为孤儿进程,这些孤儿进程将会终止,同时会接收到由信号处理程序SIGCONT发来的SIGHUP信号.
END
笔者:个人能力有限,只是学习参考...读者若发现文中错误,敬请提出.
exit函数使用说明相关推荐
- C++ 笔记(34)— C++ exit 函数
当遇到 main 函数中的 return 语句时,C++ 程序将停止执行.但其他函数结束时,程序并不会停止.程序的控制将返回到函数调用之后的位置.然而,有时候会出现一些非常少见的情况,使得程序有必要在 ...
- objective-c abort() 与 exit() 函数的区别
exit()函数 调用exit会让用户感觉程序崩溃了,不会有按Home键返回时的平滑过渡和动画效果:另外,使用exit可能会丢失数据,因为调用exit并不会调用-applicationWillTerm ...
- exit函数_全面深入了解 Python 魔法函数
(点击上方公众号,可快速关注一起学Python) 作者:浪子燕青 链接: http://www.langzi.fun/Python魔法函数.html 魔法函数概念 魔法函数是以双下划线开头 ...
- C语言main函数、return、exit函数
main函数 说到return,有必要提及主函数的定义.很多人甚至市面上的一些书籍,都使用了void main( )这一形式 ,其实这是错误的. C/C++ 中从来没有定义过void main( ) ...
- 多线程编程:return、pthread_exit()、exit()函数区别
多线程编程:return.pthread_exit().exit()函数区别: return: 返回到调用者那里去 pthread_exit(): 将调用该函数的 ...
- exit函数的头文件问题
c标准对头文件的解释: 标准头文件要有3点特征: 1)幂等性:多次包含和只包含一次没差别 2)相互独立性:标准头文件之间不可互相包含//说明楼上cpazstido是错的 3)文件级别:头文件要在全局作 ...
- Linux学习之exit函数
From: http://hi.baidu.com/homappy/item/549b37c06865877488ad9e75 若父进程在子进程之前终止了,则子进程的父进程将变为init进程,其PID ...
- 说明exit()函数作用的程序
// algo1-4.cpp 说明exit()函数作用的程序 #include"c1.h" int a(int i) { if(i==1) { printf("退出程序的 ...
- MATLAB中神经网络train函数使用说明
MATLAB中神经网络train( )函数使用说明 函数的语法格式如下: [net, tr]=train(net, P, T, Pi, Ai): train( )函数用于训练创建好的感知器网络,事实上 ...
最新文章
- 隔空投送所有人安全吗_Find X2将采用2K+120Hz屏幕,支持65W;安卓将拥有“隔空投送”;“杀毒霸主”Avast被曝偷卖4.35亿用户数据;...
- 动软发布微信营销服务系统,微信商城系统!
- python中有没有switch_Python为什么没有switch/case语句?
- (chap5 web服务器) 虚拟主机
- mysql和mongodb替换字段中某字符
- Bootstrap表单
- php单选框点击取消,取消选中单选框radio的三种方式
- Windows学习总结(18)——Windows运行命令与Win键+快捷键再总结
- 我在CSDN上的博客地址!
- Unity3D之UGUI基础3:Image图片
- 获取指定域名的IP地址
- 谈谈数据模型、领域模型、视图模型和命令模型
- 【无标题】梦笔记2022-02-20
- VC6.0下配置opengl
- 将MP4视频和MP4音频合并成MP4文件
- windows10任务栏无响应解决方案
- 美团综合业务推荐系统的质量模型及实践
- Photoshop教程_PS渐变工具找不到,怎样导入ps渐变样式?ps渐变使用教程.
- android 自动运行 app,「定时启动」时间一到自动运行指定的 App(Android)
- 设计递归函数模拟汉诺塔游戏