unix环境高级编程--第7章 UNIX进程的环境.doc

unix环境高级编程--第7章 UNIX进程的环境.doc

ID:55720543

大小:43.50 KB

页数:17页

时间:2020-05-28

unix环境高级编程--第7章 UNIX进程的环境.doc_第1页
unix环境高级编程--第7章 UNIX进程的环境.doc_第2页
unix环境高级编程--第7章 UNIX进程的环境.doc_第3页
unix环境高级编程--第7章 UNIX进程的环境.doc_第4页
unix环境高级编程--第7章 UNIX进程的环境.doc_第5页
资源描述:

《unix环境高级编程--第7章 UNIX进程的环境.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、发信人: scircle (yuanyuan), 信区: Security        标  题: unix环境高级编程--第7章 UNIX进程的环境 发信站: BBS 水木清华站 (Mon Mar 27 15:53:35 2000)  第七章〓Unix进程的环境 71〓引言 下一章将介绍进程控制原语,在此之前需先了解进程的环境。在本章中我们将说明 :当执行 一通程序时,其main函数是如何被调用的,命令行参数是如何传送给执行程序的; 典型的存 储器布局是什么样式;如何分配另外的存储空间;进程如何使用环境变量;进程终 止的不同 方式等。另外,我们也将说明longjmp和setj

2、mp函数以及它们与栈的交互作用。在 本章结束 之前,我们将查看进程的资源限制。 72〓main函数 一道C程序总是从main函数开始执行。main函数的原型是: int main (int argc,char * argv[]); 其中,argc是命令行参数数,argv是指向参数的各个指针所构成的数组。在74节 中我们将 对命令行参数进行说明。 在系统核起动一道C程序时(用一个exec函数,我们将在89节中说明exec函数), 在调用mai n前先调用一个特殊的起动例程。可执行程序文件将此起动例程指定为程序的起始 地址〖CD2 〗这是由连接编辑程序设置的,而连接编辑程序

3、则由C编译程序(通常是cc)调用。 起动例程 从系统核取得命令行参数和环境变量值,然后为调用main函数作好安排。 73〓进程终止 有五种方式使进程终止: 1正常终止 (a)从main返回 (b)调用exit (c)调用 迹茫模*常病絜xit 2异常终止 (a)调用abort(第十章) (b)由一个信号终止(第十章) 上节提及的起动例程是这样编写的,使得从main返回后即调用exit函数。如果将起 动例程以 C代码工表示(实际上该例程常常用汇编语言编写),则它调用main函数的形式可能 是: exit(main(argc,argv)); exit和 迹茫模

4、*常病絜xit函数 exit和 迹茫模*常病絜xit函数正常终止一个程序: 迹茫模*常病絜xit立即进入 系统核, exit则先执行一些清除处理(包括的用执行各终止处P2程序,关闭所有标准I/O流 等) #include  void exit(int status); #include  void  迹茫模*常病絜xit (int status); 我们将在85节讨论这两个函数对其它进程,例如终止进程的父、子进程的影响。  使用不同头文件的原因是:exit是由ANSIC说明的,而 迹茫模*常病絜xit则是由 Posix1

5、 说明的。 由于历史原因,exit函数总是执行一个标准I/O库的清除关闭操作:对于所有打开 流调用fcl ose函数。回忆55节,这造成所有在缓存中的数据都被刷新(写到文件上)。 exit和 迹茫模*常病絜xit都带一个整型参数,我们称此为终止状态。大多数Uni x Shell都 提供检查一个 进程终止状态的方法。如果(a)若调用这些函数时不带终止状态,或(b)main执行了 一个无返 回值的return语句,或(c)main执行隐式返回,则该进程的终止状态是末定义的。 这就意味 着,下列经典性的C语言程序 #indude  main () { 〓〓pr

6、intf ("hello,world \n"); } 是不完整的,因为main函数没有使用return语句返回(隐式返回),它在返回到C的 起动例程 时并没有返回一个值(终止状态)。另外,若使用 return(0); 或者 exit(0); 则向启动执行此程序的进程(常常是一个shell进程)返回终止状态0。另外,main函 数的说明 实际上应当是: int main(void) 在下一章,我们针会了解到一个进程如何一道程序执行,如何等待执行该程序的进 程完成, 然后取得其终止状态。 将main说明为返回一个整型以及用exit代替return,对某些C编译程序和Uni

7、x Lin t(1)程序 而言会产生不必要的警告信息。问题是这些编译程序并不了解在main中的exit与r eturn语句 的作用相同。警告信息可能是"control reaches end of nonvoid function。"(控 制到达 非void函数的结束处),避开这种警告信息的一种方法是:在main中使用return语 句而不是e xit。但是这样做的结果是使我们不能用Unix。 grep公用程序来找出一道程序中的所有exit调

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。