2022年创建新进程:fork函数 2.pdf
《2022年创建新进程:fork函数 2.pdf》由会员分享,可在线阅读,更多相关《2022年创建新进程:fork函数 2.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、创建新进程:fork 函数1.fork函数干什么?#include#include pid_t fork(void);fork()函数用于从已存在进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。你可以通过检查 fork()函数的返回值知道哪个是父进程,哪个是子进程。父进程得到的返回值是子进程的进程号,而子进程则返回0。以下这个范例程序说明它的基本功能:pid_t pid;switch(pid=fork()case-1:/*这里 pid 为-1,fork 函数失败 */*一些可能的原因是 */*进程数或虚拟内存用尽 */perror(The fork failed!);break;c
2、ase 0:/*pid为 0,子进程 */*这里,我们是孩子,要做什么?*/名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 5 页 -/*.*/*但是做完后,我们需要做类似下面:*/_exit(0);default:/*pid大于 0,为父进程得到的子进程号*/printf(Childs pid is%dn,pid);当然,有人可以用 if().else.语句取代 switch()语句,但是上面的形式是一个有用的惯用方法。知道子进程自父进程继承什么或未继承什么将有助于我们。下面这个名单会因为不同 Unix 的实现而发生变化,所以或许准确性有了水份。请注意子进程得到的是这些东西的
3、*拷贝*,不是它们本身。由子进程自父进程继承到:*进程的资格(真实(real)/有效(effective)/已保存(saved)用户号(UIDs)和组号(GIDs)*环境(environment)*堆栈*内存*打开文件的描述符(注意对应的文件的位置由父子进程共享,这会引起含糊情况)*执行时关闭(close-on-exec)标志(译者注:close-on-exec标志可通过fnctl()对文件描述符设置,POSIX.1 要求所有目录流都必须在exec 函数调用时关闭。更详细说明,参见 W.R.Stevens,1993,尤晋元等译(以下简称),3.13节和 8.9 节)名师资料总结-精品资料欢迎下
4、载-名师精心整理-第 2 页,共 5 页 -*信号(signal)控制设定*nice值(译者注:nice 值由 nice 函数设定,该值表示进程的优先级,数值越小,优先级越高)*进程调度类别(scheduler class)(译者注:进程调度类别指进程在系统中被调度时所属的类别,不同类别有不同优先级,根据进程调度类别和nice 值,进程调度程序可计算出每个进程的全局优先级(Global process prority),优先级高的进程优先执行)*进程组号*对话期 ID(Session ID)(译者注:译文取自,指:进程所属的对话期(session)ID,一个对话期包括一个或多个进程组,更详细说
5、明参见 9.5 节)*当前工作目录*根目录 (译者注:根目录不一定是“/”,它可由 chroot 函数改变)*文件方式创建屏蔽字(file mode creation mask(umask)(译者注:译文取自,指:创建新文件的缺省屏蔽字)*资源限制*控制终端子进程所独有:*进程号*不同的父进程号(译者注:即子进程的父进程号与父进程的父进程号不同,父进程号可由 getppid 函数得到)*自己的文件描述符和目录流的拷贝(译者注:目录流由opendir 函数创建,因其为顺序读取,顾称“目录流”)*子进程不继承父进程的进程,正文(text),数据和其它锁定内存(memory locks)(译者注:锁
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年创建新进程:fork函数 2022 创建 进程 fork 函数
限制150内