首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

unix环境高级编程札记(1)-进程环境

2013-10-19 
unix环境高级编程笔记(1)-----进程环境理解UNIX环境中C程序的环境是理解UNIX进程控制特征的先决条件,本章

unix环境高级编程笔记(1)-----进程环境

理解UNIX环境中C程序的环境是理解UNIX进程控制特征的先决条件,本章的主要内容是:

(1)、进程是如何启动和终止的。

(2)、如何向进程传递参数表和环境。

(3)、C程序的存储空间布局。

(4)、进程如何动态分配和释放存储器


1、进程的启动和终止

当内核执行C程序时,(使用一个exec函数),在调用main前先调用一个特殊的自动例程,可执行文件将此启动例程定为程序的起始地址,启动例程从内核取得main函数的命令行参数和环境变量的值,然后调用main函数。

进程的终止方式有5种正常终止和3中异常终止,详解请见UNIX环境高级编程。

unix环境高级编程札记(1)-进程环境

2、命令行参数和环境表

3、C程序的存储空间布局

C程序的典型的存储器安排为:

正文段:由cpu执行的机器指令部分,正文段可以共享

初始化数据段:通常称为数据段,包含了程序中明确赋初值的变量。

非初始化数据段:通常称为BSS段(block started by symbol),在程序开始之前,内核将此段变量初始化为0或空指针。

栈:自动变量和每次函数调用时所保存的信息都在此段,每次调用函数时,其返回地址和调用者的环境信息都放在栈中,然后,最近被调用的函数在栈上为其自动和临时变量分配存储空间。递归函数每次调用自身时,就使用一个新的栈帧,所以一个函数调用的实例集不会影响另一个函数实例中的变量。

堆:通常在堆中进行动态存储分配,低地址到高地址分别为:正文,初始化数据段,非初始化数据段,堆,栈。





热点排行