Unix编程第7章 进程环境】的更多相关文章

准备雄心勃勃的看完APUE,但是总感觉看着看着就像进入一本字典,很多地方都是介绍函数的用法的,但是给出例子远不及函数介绍的多.而且这本书还是个大部头呢.第7章的讲的进程环境,进程是程序设计中一个比较重要的概念,知道倒是知道它的大概意思,但是其实还是有很多的细节其实都没有深究,这章呢APUE就带着我们逛了一下如下的几个主题(尼玛,学C语言的话,学那点语法其实不是很重要,反而经常把时间浪费在语法的蹩脚处): 1.程序执行的时候main函数是如何被调用的 2.命令行参数是如何传递给新程序的: 3.典型…
本章涉及C/C++程序中main函数是如何被调用的.命令行参数如何传递给main函数.程序的内存空间布局.程序如何使用环境变量.程序如何终止退出. main函数 C程序或C++程序总是从main函数开始执行的,其中这个总是从main函数开始执行是我们人为约定的,因为main( )函数也是当做一个函数被调用的,所以需要被系统知道被调函数的名字,当然现在从main函数开始执行已经成为语言标准了,在汇编层次,我们可以把程序起始执行地址指向一个自定义的名字. 书本上7.2节这里的翻译很是生硬,字面意思直…
7 - 进程环境 Github 地址 1. main 函数 C 程序总是从 main 函数 开始执行: int main(int argc, char *argv[]); \(argc\) 为命令行参数的数目,\(argv\) 是指向参数各个指针所构成的数组. 内核使用一个 exec 函数 执行 C 程序,在调用 main 前先调用一个特殊的启动例程.可执行程序文件将此例程指定为程序的起始地址,启动例程在调用 main 函数前从内核获取命令行参数和环境变量值. 2. 进程终止 2.1 终止类型…
上一章介绍了内核对象,这一节开始就要不断接触各种内核对象了.首先要给大家介绍的是进程内核对象.进程大家都不陌生,它是资源和分配的基本单位,而进程内核对象就是与进程相关联的一个数据结构.操作系统内核通过它管理进程,也就是操作系统原理上介绍的进程控制块(PCB).举个例子,它就相当于每个学生都有的学籍,学校管理我们都是通过学籍,什么记过了,处分了,开除学籍了,都是在学籍上做文章.       进程一般被定义为一个正在运行的程序的一个实例,它由两部分组成:       1:内核对象,操作系统用它来管理…
本章是UNIX系统中进程控制原语,包括进程创建.执行新程序.进程终止,另外还会对进程的属性加以说明,包括进程ID.实际/有效用户ID. 进程标识 每个进程某一时刻在系统中都是独一无二的,它们之间是用一个非负数的唯一ID来表示和区分,虽然是唯一的,但成立条件是某一时刻,进程ID可以在不同时刻复用,当一个进程终止后,其ID就称为复用的候选者,UNIX系统通常会有一个延迟的复用算法,使得新创建的进程ID不同于最近一段时间内终止的进程ID,以避免将新进程误认为是之前已终止的那个进程. 进程ID为1的通常…
在第8章学习了进程的控制原语,通过各种进程原语可以对进程进行控制,包括新建进程.执行新程序.终止进程等.在使用fork( )产生新进程后,就出现了进程父子进程的概念,这是进程间的关系.本章更加详细地说明进程间的关系,包括:进程组.会话.作业等. 终端登录 当我们通过硬件终端而非网络终端登录到系统时,UNIX会有一个登录流程,该流程是个大概的过程,各个实现可能存在细微差别,但总体流程不变. 在通过终端登录时,init进程负责为每个终端fork一个子进程,由子进程对应登录终端设备.init进程会fo…
7.2 main函数 1.C程序总是从main函数开始执行的,原型:int main(int argc,char *argv[]);argc是命令行参数的个数argc是指向参数的各个指针所构成的数组2.内核执行C程序时,在调用main前先调用一个特殊的启动例程.可执行程序文件将此启动例程作为程序的起始地址.启动例程从内核取得命令行参数和环境变量值,然后为按照上述方式调用main函数做好安排.(这是由连接编辑器设置的,而连接编辑器则由C编译器调用)启动例程有点像这样子:exit(main(argc…
1. main函数 int main( int argc, char *argv[] ); argc是命令行参数的数目,包括程序名在内 argv是指向参数的各个指针所构成的数组,即指针数组 当内核执行C程序时(使用exec函数),在调用main前先调用一个特殊的启动例程.可执行程序文件将此启动例程指定为程序的起始地址——这是由连接器设置的,而连接器则是由C编译器调用.启动例程从内核取得命令行参数和环境变量值,然后按上述方式调用main函数做好安排. 2. 进程终止 有8种方式使进程终止,其中5种…
在学习进程控制相关知识之前,我们需要了解一个单进程的运行环境. 本章我们将了解一下的内容: 程序运行时,main函数是如何被调用的: 命令行参数是如何被传入到程序中的: 一个典型的内存布局是怎样的: 如何分配内存: 程序如何使用环境变量: 程序终止的各种方式: 跳转(longjmp和setjmp)函数的工作方式,以及如何和栈交互: 进程的资源限制   1 main函数 main函数声明: int main (int argc, char *argv[]); 参数说明: argc:命令行参数个数…
第4章 进 程     本章介绍系统如何管理所有正在运行的应用程序.首先讲述什么是进程,以及系统如何创建进程内核对象,以便管理每个进程.然后将说明如何使用相关的内核对象来对进程进行操作.接着,要介绍进程的各种不同的属性,以及查询和修改这些属性所用的若干个函数.还要讲述创建或生成系统中的辅助进程所用的函数.当然,如果不深入说明如何来结束进程的运行,那么这样的介绍肯定是不完整的.现在就来介绍进程的有关内容.进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: • 一个是操作系统用来管理进程的…