man exit _exit
来源:互联网 发布:sql通配符的使用 编辑:程序博客网 时间:2024/06/05 02:19
英语水平低于一般人之下,不达供参水平。
1 _exit(2) –Linux man page
名字
_exit, _Exit – 终止当前运行的进程
纲要
#include <unistd.h>
void _exit(int status);
#include <stdlib.h>
void _Exit(int status);
描述
_exit()函数即刻终止当前运行的进程。属于当前进程的任何打开的文件描述符都会被关闭。如果此进程有子进程,则此进程变为init进程,此进程会像父进程发送一个SIGCHLD信号。
status的值被返回给父进程,作为当前进程的退出状态。父进程调用wait(2)函数能够获取子进程退出的退出状态。
_Exit()等效于_exit()。
返回值
函数无返回值。
注意
关于进程退出的影响,像传送给父进程的值status,僵尸进程,信号传送等可参考exit(3)函数。
_exit()函数就像exit(),但前者不会用atexit(3)或者on_exit(3)来调用任何函数注册。_exit(3)是否会刷新I/O缓冲区,是否会删除由tmpfile(3)创建的临时文件依赖具体的实现。另一方面,_exit()会关闭文件描述符,这就可能引起一个输出的延迟。如果要去掉这样的延迟,那么可以在调用_exit()之前调用tcflush(3)函数。当调用_exit()时,是不是每一个被挂起的I/O都会被取消,哪一个挂起的I/O可能会被取消都要看具体的实现。
glibc 2.3版本及以下,_exit()函数的封装会调用与之同名的系统调用。2.3版本以上,此函数会调用exit_group(2),以终止此进程中的所有线程。
2 exit(3) –Linux man page
名字
exit – 引起一个正规的进程终止
纲要
#include <stdlib.h>
void exit(int status);
描述
exit()函数能引起一个正规进程退出并向父进程返回status& 0377值。
通过调用atexit(3)和on_exit(3)将所有的函数注册,它们被注册的顺序跟实际的注册顺序相反。(在处理退出期间,这些被注册函数中的一个函数可以调用atexit(3)或者on_exit(3)来注册一个将要被执行的另外一个函数。新注册的函数被添加到即将被调用函数列表的最前面。)如果这些函数不会返回(比如,调用_exit(2),或者用信号杀死了自身),那么进一步的退出处理将不会被执行(特别像刷新stdio(3)流)。如果一个函数由atexit(3)或者on_exit(3)注册多次,那么它将会执行跟注册次数一样的次数。
被打开的所有的stdio(3)流都会被关闭。由tmpfile(3)创建的文件都会被移除。
C标准指定了两个常量,EXIT_SUCCESS和EXIT_FAILURE,这两个值将会被传给exit()分别暗示终止的成功还是失败。
返回值
exit()函数无返回值。
注意
调用exit()或者longjmp(3)用atexit(3)和on_exit(3)来注册函数时并没有定义会发生什么样的情况。注意调用execve(2)函数时将移除atexit(3)和on_exit(3)创建的注册。
EXIT_SUCCESS和EXIT_FAILURE相对于0和非0(1,-1)要更方便(对于非UNIX环境来说)。尤其是,VMS用一个不同的转换。
BSD尝试着去标准化退出代码,见<sysexits.h>.
调用exit()后,退出状态会传递给父进程。这里有三种情况:当父进程设置了SA_NOCLDWAIT,SIGCHLD或SIG_IGN,这个状态会被丢弃。如果父进程在等子进程,父进程被通知了其退出状态。在这两种情况下,退出进程会立马终止。如果父进程并不关心子进程的退出状态,也没有等待子进程的退出状态,子进程就成为了僵尸进程。所以,父进程可以通过调用wait(2)函数来了解子进程的退出状态。
如果实现支持SIGCHLD信号,这个信号将被送到父进程。如果父进程设置了SA_NOCLDWAIT,当SIGCHLD信号被送到时没有定义应作出何处理。
如果进程是session的首个进程,并且它的控制终端就是session的控制终端,那么在这个控制终端下的每个在前台的进程组将会发送一个SIGHUP信号,终端与session就会失去关联,允许新的控制进程访问此控制终端。
如果一个进程的退出引起了一个进程组变成了孤儿组,如果任何新的孤儿进程组被停止,那么SIGHUP信号将会被SIGCONT信号跟随着发送到此进程组中的每一个进程。见setpgid(2)作为学习孤儿进程组的扩展。
TNote Over.
- man exit _exit
- exit , _Exit 或 _exit
- exit _exit _Exit
- exit(),_exit(),_Exit()
- exit&_exit&_Exit
- exit() _exit()
- exit _exit
- exit、_Exit、_exit和atexit
- exit,_exit,_Exit的区别
- exit与_exit区别
- exit、 _exit、 atexit区别
- fork vfork exit _exit
- exit(),_exit()的区别
- exit()和_exit()
- exit 和 _exit
- exit(),_exit()的区别
- return,exit,_exit区别
- linux exit和_exit
- 阿里的笔试题
- POJ2367Genealogical tree拓扑排序&前向星
- “var snoopy = new Dog("snoopy");”到底做了什么
- [Android]获取未安装的APK图标
- 护卫队
- man exit _exit
- poj 3669 Meteor Shower(广度优先搜索)
- jsp 自定义标签 一 简单示例
- 黑马程序员-java_Properties_Runtime
- xp任务栏不显示任务 vbs脚本
- 设计模式
- 2014年中国互联网大会->随笔
- ZOJ-#3502 Hello, Gensokyo(找规律)
- Ios 程序打包,安装流程