我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:港彩神鹰 > 读入原语 >

什么是服务原语服务原语和协议的区别

归档日期:06-27       文本归类:读入原语      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  用fork创建新进程,用exec执行新的程序,exit函数和两个wait函数处理终止和等待终止。下面分别讲解一下: 除了交换进程(swapper)、init进程和精灵进程(daemon)外,一个现存进程调用fork函数是UNIX内核创建一个新进程的唯一方法。由fork创建的新进程被称为子进程( child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程ID。子进程是父进程的复制品。例如,子进程获得父进程数据空间、堆和栈的拷贝。注意,是拷贝,不是共享(可共享的TEXT段除外)。一般来说,在fork之后是父进程先执行还是子进程先执行是不确定的。这取决于内核所使用的调度算法。fork的典型用法为:1) 一个父进程希望复制自己,使父、子进程同时执行不同的代码段;2) 一个进程要执行一个不同的程序。在这种情况下,子进程在从fork返回后立即调用exec。对于exit,以前有过说明,这里再补充一点。如果父进程在子进程之前终止,则对于其父进程已经终止的所有进程,它们的父进程都改变为init进程。一个已经终止、但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息、释放它仍占用的资源)的进程被称为僵死进程。要解决僵死进程的问题,可以fork两次,父-子-孙,中间让子进程exit,这样孙进程的父进程就变为init了,而init被编写成只要有一个子进程终止,init就会调用一个wait函数取得其终止状态并处理善后,从而防止了在系统中有很多僵死进程。wait和waitpid都用于处理进程终止的。二者有一定区别,在一个子进程终止前,wait使其调用者阻塞,而waitpid有一选择项,可使调用者不阻塞。并且waitpid还有一些可控制的选项(详情请查书)。关于二者还有一些宏可用。 exec函数有六种,统称为exec。当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈。

本文链接:http://chuyenchame.com/duruyuanyu/598.html