Linux进程——进程退出

进程退出

进程退出主要分为两种:正常退出、异常退出

1.正常退出

正常退出分为以下几种:

1.main函数调用return
2.进程调用exit(),标准c库
3.进程调用 _exit() 或者 _Exit() ,属于系统调用
4.进程最后一个线程返回
5.最后一个线程调用pthread_exit(4和5与线程有关)

2.异常退出

异常退出分为以下几种:

1.调用abort函数
2.当进程收到某些信号时,如 ctrl+C
3最后一个线程对取消 (cancellation) 请求做出响应

退出函数的解析

退出函数分别有exit()、_exit()、_Exit(),其函数原型和参数如下:

函数原型 所包含头文件 参数
void exit(int status)  <stdlib.h> exit(0)正常退出;exit(1)异常退出
void _exit(int status)  <unistd.h> _exit(0)正常退出;_exit(1)异常退出
void _Exit(int status) <stdlib.h>

_Exit(0)正常退出;_Exit(1)异常退出

status 是一个整型的参数,可以利用这个参数传递进程结束时的状态。一般来说,0表示正常结束;其它的值表示出现了错误,进程非正常结束在实际编程时,可以用 wait()系统调用接收子述程的返回值,针对不同的情况进行不同的处理。

第二种与第三种类似,但第一种与其他两种有一定的区别,区别如下:

_exit()函数的作用是: 直接使进程停止运行,清除其使用的内存空间,并清除其在内核中的各种数据结构

exit()函数则在这些基础上做了一些包装,在执行退出之前加了若干道工序.

exit()函数和_exit()函数的最大区别就在于exit()函数在终止当前进程之前要检查该进程,打开过那些文件,把文件缓冲区中的内容写回文件,也就是图中的 "清除I/O缓冲" 一项.

 父进程等待子进程的退出

子进程退出的收集

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值