UNIX环境高级编程07.pdf

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UNIX环境高级编程07

下载 下载 第7章 U N I X进程的环境 7.1 引言 下一章将介绍进程控制原语,在此之前需先了解进程的环境。本章中将学习:当执行程序 时,其m a i n 函数是如何被调用的,命令行参数是如何传送给执行程序的;典型的存储器布局是 什么样式;如何分配另外的存储空间;进程如何使用环境变量;进程终止的不同方式等。另外, 还将说明l o n g j m p和s e t j m p函数以及它们与栈的交互作用。本章结束之前,还将查看进程的资源 限制。 7.2 main 函数 C程序总是从m a i n 函数开始执行。m a i n 函数的原型是: int main(inta rg c , char *a rg v [ ] ) ; 其中,a rg c是命令行参数的数目,a rg v是指向参数的各个指针所构成的数组。 7 . 4节将对命令行 参数进行说明。 当内核起动C程序时(使用一个e x e c 函数,8 . 9节将说明e x e c 函数) ,在调用m a i n前先调用一 个特殊的起动例程。可执行程序文件将此起动例程指定为程序的起始地址——这是由连接编辑 程序设置的,而连接编辑程序则由 C编译程序(通常是c c )调用。起动例程从内核取得命令行参 数和环境变量值,然后为调用m a i n 函数作好安排。 7.3 进程终止 有五种方式使进程终止: (1) 正常终止: (a) 从m a i n返回。 (b) 调用e x i t 。 (c) 调用_ e x i t 。 (2) 异常终止: (a) 调用a b o r t (见第1 0章) 。 (b) 由一个信号终止(见第1 0章) 。 上节提及的起动例程是这样编写的,使得从 m a i n返回后立即调用e x i t 函数。如果将起动例 程以C代码形式表示(实际上该例程常常用汇编语言编写) ,则它调用m a i n 函数的形式可能是: exit( main(argc, argv) ); 7.3.1 exit和_ e x i t 函数 e x i t和_ e x i t 函数用于正常终止一个程序: _ e x i t 立即进入内核, e x i t则先执行一些清除处理 (包括调用执行各终止处理程序,关闭所有标准 I / O流等) ,然后进入内核。 第 7章 U N I X进程的环境 1 2 3 下载 #include stdlib.h void exit(ints t a t u s ) ; #include unistd.h void _exit (ints t a t u s ) ; 我们将在8 . 5节中讨论这两个函数对其他进程,例如终止进程的父、子进程的影响。 使用不同头文件的原因是:e x i t是由ANSI C 说明的,而_ e x i t则是由P O S I X . 1说 明的。 由于历史原因,e x i t 函数总是执行一个标准 I / O库的清除关闭操作:对于所有打开流调用 f c l o s e 函数。回忆5 . 5节,这造成缓存中的所有数据都被刷新 (写到文件上) 。 e x i t和_ e x i t 都带一个整型参数,称之为终止状态(exit status )。大多数UNIX shell 都提供检 查一个进程终止状态的方法。如果 ( a )若调用这些函数时不带终止状态,或 ( b ) m a i n执行了一个 无返回值的r e t u r n语句,或( c ) m a i n执行隐式返回,则该进程的终止状态是末定义的。这就意味 着,下列经典性的C语言程序: #include stdio.h main () { printf (hello, world \n); } 是不完整的,因为m a i n 函数没有使用r e t u r n语句返回( 隐式返回) ,它在返回到C 的起动例程时并 没有返回一个值(终止状态) 。另外,若使用: r e t u r n ( 0 ) ; 或者

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档