Process Environment
7-1 Introduction
在第八章介绍进程控制原语(process control primitives)之前,我们需要先研究一下进程执行的环境。
本章我们会关注:
1. main函数是如何在程序执行时被调用的
2. 命令行参数是如何传递给新进程的
3. 内存布局什么样?
4. 如何分配额外的内存
5. 进程如何使用环境变量
6. 终止进程的几种方法
7. longjmp
和setjmp
8. 进程的资源限制
对于本章节知识点进行了总结,链接如下:http://blog.csdn.net/feather_wch/article/details/50725828
可用于日后复习之用
7-2 main Function
C程序从main函数开始,其原型如下:
int main(int argc, char * argv[]);
C程序是有kernel调用exec程序之一来调用的。在main函数之前存在着特殊的启动函数(start-up)。启动函数被设置为程序的开始地址。这是由link editor
设置的。
启动程序的作用?
用于从kernel(内核)获得一些值,如获得了命令行参数(command-line argument)和环境(environment)
7-3 Process termination
进程终止的有几种方式:
一般的终止方式:
1. 从main return
2. 调用exit
3. 调用_Exit, _exit
4. 开始程序的最后一个线程 return
5. 在最后一个线程调用 pthread_exit
异常的终止方式:
6. 调用abort
7. 接收到信号
8. Response of the last thread to a cancellation request(11.5 and 12.7)
启动程序如果是用C编写的(大多是用汇编编写的),那么调用main
的部分如下:
exit(main(argc, argv));
Exit Functions
通常终止进程的三个函数:_exit, _Exit和exit
原型如下:
#include <stdlib.h>
void exit(int status);
void _Exit(int