本节目标: exec替换进程映像 exec关联函数组(execl.execlp.execle.execv.execvp) 一,exec替换进程映像 在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离.这样的好处是有更多的余地对两种操作进行管理. 当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行.当然,exec系列的函数也可以将当前进程替换掉. 例如:在shell命令行执行ps命令,实际上是shell进程调用fork复制一个新…
本节目标: exec替换进程映像 exec关联函数组(execl.execlp.execle.execv.execvp) 一,exec替换进程映像 在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离.这样的好处是有更多的余地对两种操作进行管理. 当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行.当然,exec系列的函数也可以将当前进程替换掉. 例如:在shell命令行执行ps命令,实际上是shell进程调用fork复制一个新…
今天继续学习系统编程,学习的主题还是进程,今天主要讨论的是守护进程相关的概念,开始进入正题: 什么是守护进程:       守护进程的创建步骤: 在描述它之前,首先得先了解两个概念:进程组.会话期:   而它里面有bash shell进程组,里面只有bash进程:   这时,当我们在shell命令行中敲入如下命令: 这时,会话期中又会多出一个进程组,如下: 而一个会话期,实际上就对应一个终端,当我们打开多个虚拟终端时,可以用tty来查看终端数: 而守护进程是跟控制终端无关的,并且是在后台执行的,…
fork函数: #include <unistd.h>        pid_t fork(void); fork用来创建一个子进程: 特点: fork调用后会返回两次,子进程返回0,父进程返回子进程的进程ID:fork返回后,子进程和父进程都从fork函数的下一条语句開始运行: 注意: fork之后,操作系统会复制一个与父进程全然同样的子进程,虽说是父子关系.可是在操作系统看来,他们更像兄弟关系,这两个进程共享代码空间,可是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝.指令…
今天继续学习进程相关的东东,继上节最后简单介绍了用exec函数替换进程映像的用法,今天将来深入学习exec及它关联的函数,话不多说,正式进入正题: exec替换进程映象:   对于fork()函数,它创建了一个新进程,新进程与原进程几乎是一样的,而对于shell命令,如: 对于shell命令,它本身就是一个进程,要想执行ls程序,则需去加载ls程序,这时shell命令进程则需fork()创建一个新进程,而我们知道新创建的进程与原进程几乎是一样的,也就意味着新的进程的代码还是跟shell程序本身是…
今天起,开始学习linux系统编程中的另一个新的知识点----进程,在学习进程之前,有很多关于进程的概念需要了解,但是,概念是很枯燥的,也是让人很容易迷糊的,所以,先抛开这些抽象的概念,以实际编码来熟悉进程到底是个什么东东,这样学习起来要有兴趣一些,在学习一门技术时,找一种能提高自己兴趣的方法是很重要的,这也是我自己学习的一个比较"典型"的学习流程吧,关于不太清楚的概念会在实验中一一阐述(当然不可能理解得很透,但是没关系,先把实践做出来,随时间的推移再慢慢摸透它),理论当然也是非常非常…
在Linux中,并不存在exec()函数,exec指的是一组函数,一共有6个,分别是: #include <unistd.h> extern char **environ; int execl(const char *path, const char*arg, ...); int execlp(const char *file, const char*arg, ...); int execle(const char *path, const char*arg, ..., char * cons…
目录 Daemon进程介绍 前提知识 Daemon进程的编程规则 Daemon进程介绍 Daemon运行在后台也称作"后台服务进程". 它是没有控制终端与之相连的进程.它独立与控制终端.会话周期的执行某种任务. 那么为什么守护进程要脱离终端后台运行呢? 守护进程脱离终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的任何终端信息所打断. 那么为什么要引入守护进程呢? 由于在linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程…
本节目标: 进程状态变迁 进程控制块 进程创建 进程撤消 终止进程的五种方法 一,进程状态变迁 进程的三种基本状态 就绪(Ready)状态 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态. 执行(Running)状态 当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态. 阻塞(Blocked)状态 正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态.引起进程阻塞的事件可有多种,例如,等待I/O完成.…
本节目标: 僵进程 SIGCHLD wait waitpid 一,僵尸进程 当一个子进程先于父进程结束运行时,它与其父进程之间的关联还会保持到父进程也正常地结束运行,或者父进程调用了wait才告终止. 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态. 进程表中代表子进程的数据项是不会立刻释放的,虽然不再活跃了,可子进程还停留在系统里,因为它的退出码还需要保存起来以备父进程中后续的wait调用使用.它将称为一个"僵进程&…