`
deepfuture
  • 浏览: 4333427 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79428
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68376
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101498
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:281206
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14608
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65559
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31320
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45206
社区版块
存档分类
最新评论

f o r k函数

阅读更多

一个现存进程调用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〕

 

它的功能是啥呢?很简单,就是新建一个子进程。
 
许多时候我们需要在一个进程中执行另一个程序,但又不想影响本进程的运行,那么可以创建一个子进程,然后再进行处理。
 
那新建的子进程的特点是什么?它其实就是父进程的复制品,继承了几乎所有能继承的,包括标准输出输入、变量值等等。注意这里是复制品,它们的内容几乎一样,但不代表共享了一份内存。。

分享到:
评论

相关推荐

    C语言函数手册

    以首字母分类(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语言函数手册HTML版

    以首字母分类(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语言库函数(包括所有函数)

    C语言库函数(包括所有函数) A B C D E F G H K M O P Q R S T U V W

    PHP函数参考手册大全

    作者和贡献者 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 ++ ) ...

    R上由指数型整函数的Hermite型插值的收敛性 (2004年)

    证明了如果fELp(R).f(x)=O( (1+|x|)|1/P+δ),δ&gt;0,且f在R的任何有限区间上 Riernann可积,则lim||f-Ho(f)||p(R)=0,其中Ho(f)是f通过由其样本{f(kr)/δ}K∈Z,在LP(R)中的指数20型整函数空间B中的Hermite型的插值算子。

    C语言FAQ 常见问题列表

    o 5.6 我有一个函数 extern int f(int *); 它接受指向 int 型的指针。我怎样用引用方式传入一个常数?下面这样的调用 f(&5); 似乎不行。 o 5.7 C 有 ``按引用传递" 吗? o 5.8 我看到了用指针调用函数的不同语法...

    c语言编程宝典

    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

    C语言编程宝典(全)

    一,基础篇 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语言编程宝典C语言编程宝典

    《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进制

    一个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进制

    一个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为基数做累加。

    c# 随机函数的使用详解

    代码如下: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

    C语言编程宝典.chm -------------------------------------------------------------------------------- 基础篇 1.1 Turbo C语言概述 1.2 C语言的特点 ...I K L M O P Q R S T U V W 图形函数 字符屏幕函数

    C语言编程宝典(chm版本)

    C语言编程宝典 作者:王大刚 -------------------------------------------------------------------------------- 基础篇 1.1 Turbo C语言概述 1.2 C语言...I K L M O P Q R S T U V W 图形函数 字符屏幕函数

    比较实用的 eclipse 快捷键

    Ctrl+O: 列出当前文件的所有函数 Ctrl+/: 单行或多行注释 Ctrl+H: 查找 Ctrl+F: 查找替换 Ctrl+K: 查找下一个 Ctrl+Shift+/: 块注释 Ctrl+Shift+\: 销注释 Ctrl+Shift+T: 打开一个类 Ctrl...

    C语言编程宝典之一,作者:王大刚

    资料首页: C语言编程宝典之一 作者:王大刚 本人的《FOXPRO编程宝典之一》,《FOXPRO编程宝典之二》和《FOXPRO编程宝典之三》系列软件在《电脑报》配套光盘相继发表后,受到...F G H I K L M O P Q R S T U V W

    类库KYLib 3.1.0.0 for VS2005

    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 ...

    linux下GTK+2.0开发的单词数值计算器

    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这个...

Global site tag (gtag.js) - Google Analytics