Linux下进程的退出

来源:互联网 发布:淘宝视频制作软件 编辑:程序博客网 时间:2024/06/01 13:19

注意,本文说的是整个进程(一个进程可能包含多个线程)的退出。

一个进程的退出,有可能是由进程自己的用户态代码主动退出的,也可能是由内核通过信号处理机制(如SIGKILL、SIGABRT)强制执行的。

一、用户态主动退出

有如下多种途径,

直接main函数返回,

调用exit

调用_exit

调用exit_group

上面几种情况,

前两者等价(All functions registered with atexit(3) and on_exit(3) are called. All open stdio(3) streams are flushed and closed.),

后两者等价(Does not call any functions registered with atexit(3) or on_exit(3).  Open stdio(3) streams are not flushed.)。


二、从内核态退出

程序因为异常,或者因为管理措施要被结束时,会收到相应的信号(如SIGKILL等),然后内核在信号处理过程中,就会将进程结束掉。



无论是哪种情况,最终都是殊途同归的走到内核态的do_group_exit函数中,进程退出的全部工作(从OS的角度),都是由此函数完成的。

未完......

0 0
原创粉丝点击