一个现存进程调用f o r k函数是U N I X内核创建一个新进程的唯一方法(这并不适用于前节提
及的交换进程、i n i t进程和页精灵进程。这些进程是由内核作为自举过程的一部分以特殊方式
创建的)。
#i nclude <sys/types.h>
#i nclude <unistd.h>
pid_t fork(void);
返回:子进程中为0,父进程中为子进程I D,出错为-1
由f o r k创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返
回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程 I D。将子进程I D返回
给父进程的理由是:因为一个进程的子进程可以多于一个,所以没有一个函数使一个进程可以
获得其所有子进程的进程I D。f o r k使子进程得到返回值0的理由是:一个进程只会有一个父进
程,所以子进程总是可以调用g e t p p i d以获得其父进程的进程I D (进程ID 0总是由交换进程使用,
所以一个子进程的进程I D不可能为0 )。
子进程和父进程继续执行f o r k之后的指令。子进程是父进程的复制品。例如,子进程获得
父进程数据空间、堆和栈的复制品。注意,这是子进程所拥有的拷贝。父、子进程并不共享这
些存储空间部分。如果正文段是只读的,则父、子进程共享正文段(见7 . 6节)。
现在很多的实现并不做一个父进程数据段和堆的完全拷贝,因为在 f o r k之后经常跟随着
e x e c。作为替代,使用了在写时复制( C o p y - O n - Write, COW)的技术。这些区域由父、子进程共
享,而且内核将它们的存取许可权改变为只读的。如果有进程试图修改这些区域,则内核为有
关部分,典型的是虚存系统中的“页”,做一个拷贝。B a c h〔1 9 8 6〕的9 . 2节和L e ff l e r等〔1 9 8 9〕
它的功能是啥呢?很简单,就是新建一个子进程。
许多时候我们需要在一个进程中执行另一个程序,但又不想影响本进程的运行,那么可以创建一个子进程,然后再进行处理。
那新建的子进程的特点是什么?它其实就是父进程的复制品,继承了几乎所有能继承的,包括标准输出输入、变量值等等。注意这里是复制品,它们的内容几乎一样,但不代表共享了一份内存。。
分享到:
相关推荐
以首字母分类(1): A开头 B开头 C开头 D开头 E开头 F开头 G开头 H开头 I开头 K开头 L开头 以首字母分类(2): M开头 N开头 O开头 P开头 R开头 S开头 T开头 U开头 V开头 W开头 1.字符测试函数 2.字符串操作 3.内存...
以首字母分类(1): A开头 B开头 C开头 D开头 E开头 F开头 G开头 H开头 I开头 K开头 L开头 以首字母分类(2): M开头 N开头 O开头 P开头 R开头 S开头 T开头 U开头 V开头 W开头 1.字符测试函数 2.字符串操作 3.内存...
C语言库函数(包括所有函数) A B C D E F G H K M O P Q R S T U V W
作者和贡献者 I. 入门指引 1. 简介 2. 简明教程 II....3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 ...O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可协议 S. 函数索引
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"); // var b = "", c; for(i = 1; i ; i ++ ) ...
证明了如果fELp(R).f(x)=O( (1+|x|)|1/P+δ),δ>0,且f在R的任何有限区间上 Riernann可积,则lim||f-Ho(f)||p(R)=0,其中Ho(f)是f通过由其样本{f(kr)/δ}K∈Z,在LP(R)中的指数20型整函数空间B中的Hermite型的插值算子。
o 5.6 我有一个函数 extern int f(int *); 它接受指向 int 型的指针。我怎样用引用方式传入一个常数?下面这样的调用 f(&5); 似乎不行。 o 5.7 C 有 ``按引用传递" 吗? o 5.8 我看到了用指针调用函数的不同语法...
1.1Turbo C语言概述 1.2 C 语言的特点 1.3 Turbo C 概述 1.4 Turbo C 2.0的安装和启动 1.5 Turbo C 2.0集成开发环境的使用 1.数据类型、变量和运算符 2.数据类型 3....F G H I K L M O P Q R S T U V W
一,基础篇 1.1Turbo C语言概述 1.2 C 语言的特点 1.3 Turbo C 概述 1.4 Turbo C 2.0的安装和启动 1.5 Turbo C 2.0集成开发环境的使用 1.数据类型、变量和运算符 2....F G H I K L M O P Q R S T U V W
《C语言编程宝典》 说明: 作者:王大刚 分为基础篇和函数篇 基础篇 1.1 Turbo C语言概述 1.2 C语言的特点 1.3 Turbo C 概述 1.4 Turbo C 2.0的安装和启动...I K L M O P Q R S T U V W 图形函数 字符屏幕函数
一个SQL脚本函数,10进制转换为36进制。36进制指以0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P、Q、R、S、T、U、V、W、X、Y、Z为基数做累加。
一个SQL脚本函数,36进制转换为10进制。36进制指以0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P、Q、R、S、T、U、V、W、X、Y、Z为基数做累加。
代码如下:private ...’q’,’r’,’s’,’t’,’u’,’v’,’w’,’x’,’y’,’z’, ‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’,’K’,’L’,’M’,’N’,’O’,’P’,’Q’,’R’,’S’,’
C语言编程宝典.chm -------------------------------------------------------------------------------- 基础篇 1.1 Turbo C语言概述 1.2 C语言的特点 ...I K L M O P Q R S T U V W 图形函数 字符屏幕函数
C语言编程宝典 作者:王大刚 -------------------------------------------------------------------------------- 基础篇 1.1 Turbo C语言概述 1.2 C语言...I K L M O P Q R S T U V W 图形函数 字符屏幕函数
Ctrl+O: 列出当前文件的所有函数 Ctrl+/: 单行或多行注释 Ctrl+H: 查找 Ctrl+F: 查找替换 Ctrl+K: 查找下一个 Ctrl+Shift+/: 块注释 Ctrl+Shift+\: 销注释 Ctrl+Shift+T: 打开一个类 Ctrl...
资料首页: C语言编程宝典之一 作者:王大刚 本人的《FOXPRO编程宝典之一》,《FOXPRO编程宝典之二》和《FOXPRO编程宝典之三》系列软件在《电脑报》配套光盘相继发表后,受到...F G H I K L M O P Q R S T U V W
f. 编码相关函数 {Randomize, Random, Unicode/UTF8编码, CRC32编码, Base64编码, MD5编码, 加密/解密编码等等} g. 线程相关类 {TThread, TKYThread, TKYRunThread, TKYAsynchRun, TKYTimer等等} h. 文件类 {...
o* g3 S 30.03 sku功能跳转 31.04 客户端js函数中的el表达式 32.05 异步加载spu列表数据# M& R, \7 \3 y z- w+ a% }( g" ^ 33.06 用复选框操作属性列表显示 D+ k( T; J. J" `2 u 34.07 属性参数的提交) O0 o, s0 X ...
1、 按照规则计算单词的值,如果 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为1 2 3 4 5 6 7 8 9 10 11 12 13 1 15 16 17 18 19 20 21 22 23 24 25 26, 如 WINJACK这个...