linux进程--进程环境(程序的启动与退出)
2017-09-28 11:05
489 查看
加载程序流程:
1.读取头部信息,确定需要的地址信息。
2.分配地址空间。
3.将程序读入地址空间的段中。
4.如果需要,创建一个堆栈段。
5.设置其他信息,例如环境变量。
6.执行程序。
总结:加载器每次讲程序加载前需要分配地址空间,所以每次程序加载时不会使用同样的地址。
退出程序
1.自愿退出
C语言中常用到的return和exit命令。在程序退出时,操作系统需要回收进程所分配的资源,并对每一项资源进行善后处理。
如:对于打开文件,释放文件描述符的同时,还要将缓冲区的内容“冲洗”到外存上,保证文件没有发生改变。
2.接受到一个信号退出
信号通常为:ctr+c delete ctr+/ 这三种,处理过程如自愿退出是一样的。通常用于父进程对子进程的操作上。
3.一个导致异常的操作后退出
是在程序没有准备的情况下退出的。操作系统也会对其资源进行回收,但有可能不会对这些资源作善后处理。
进程终止处理函数
1.原型及头文件
2.特点
a.其参数为一个函数指针。类型为void型,也就是说该函数不接受任何参数。
b.返回值。成功设置了进程终止处理函数,则返回0,失败则返回非0值。
c.调用时间:终止函数是在进程结束时调用的。
d.调用顺序:与设置时完全相反,以栈的形式存储。
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.调用顺序:与设置时完全相反,以栈的形式存储。
相关文章推荐
- Linux下查看进程(程序)启动时的环境变量
- [实践Ok]Linux下查看进程(程序)启动时的环境变量
- Linux下查看进程(程序)启动时的环境变量
- UNIX高级环境编程(8)进程环境(Process Environment)- 进程的启动和退出、内存布局、环境变量列表
- linux用文件锁实现保证一个程序只能启动一个进程
- linux根据进程号PID查找启动程序的全路径
- linux环境下设置程序为自动启动程序
- Linux 环境 简单启动 Java程序
- linux如何根据进程ID查找启动程序的路径
- Linux环境下C程序启动、终止分析
- linux下环境变量、启动脚本、进程判断设置
- 内核源码阅读(七)新程序的启动与进程的退出
- linux环境下编写shell脚本启动和关闭jar包服务程序
- Linux进程启动过程分析do_execve(可执行程序的加载和运行)---Linux进程的管理与调度(十一)
- linux终端关闭时为什么会导致在其上启动的进程退出?
- linux下网络程序遭遇SIGPIPE信号进程退出的原因及规避方法
- 如何在Linux桌面环境下自动启动程序?
- [Linux]在终端启动程序关闭终端不退出的方法
- Linux进程入门学习(四)-进程启动退出
- Linux系统编程_6_进程环境(C程序典型的存储空间)