linux进程--进程环境(程序的启动与退出)

加载程序流程
1.读取头部信息,确定需要的地址信息。
2.分配地址空间。
3.将程序读入地址空间的段中。
4.如果需要,创建一个堆栈段。
5.设置其他信息,例如环境变量。
6.执行程序。

总结:加载器每次讲程序加载前需要分配地址空间,所以每次程序加载时不会使用同样的地址。


退出程序
1.自愿退出
C语言中常用到的return和exit命令。在程序退出时,操作系统需要回收进程所分配的资源,并对每一项资源进行善后处理。
如:对于打开文件,释放文件描述符的同时,还要将缓冲区的内容“冲洗”到外存上,保证文件没有发生改变。

2.接受到一个信号退出
信号通常为:ctr+c delete ctr+/ 这三种,处理过程如自愿退出是一样的。通常用于父进程对子进程的操作上。

3.一个导致异常的操作后退出
是在程序没有准备的情况下退出的。操作系统也会对其资源进行回收,但有可能不会对这些资源作善后处理。


进程终止处理函数
1.原型及头文件

#include<stdlib.h>

int atexit(void (*func)(void));

2.特点
a.其参数为一个函数指针。类型为void型,也就是说该函数不接受任何参数。
b.返回值。成功设置了进程终止处理函数,则返回0,失败则返回非0值。
c.调用时间:终止函数是在进程结束时调用的。
d.调用顺序:与设置时完全相反,以栈的形式存储。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值