您的位置:首页 > 运维架构 > Linux

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

2017-09-28 11:05 489 查看
加载程序流程

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.调用顺序:与设置时完全相反,以栈的形式存储。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: