`
kenby
  • 浏览: 717279 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

fork的执行

 
阅读更多

先看看一段fork的程序

 

int main()

{

     pid_t pid;

 

     语句 a;      

     pid = fork();

     语句 b;

}

 

1.当程序运行到 pid = fork()时,这个进程马上分裂(fork的中文意思)成两个进程,我们称为父进程和子进程,子进程是父进程的副本,副本的意思是子进程把父进程的数据空间,堆和栈都复制一遍给自己用,这要求在内存给子进程分配和父进程同样大的存储空间,这样,父,子进程拥有相同的数据,但不会共享存储空间,他们只是共享正文段。


2.apue2这样说fork的执行:fork函数被调用一次,但返回两次,两次返回的唯一区别是子进程的返回值是0,而父进程的返回值则是子进程的进程ID。一直很难理解调用一次,返回两次这句话,我想这样理解可能更好:fork函数被调用一次,但执行两次,父进程执行一次返回子进程的进程ID,子进程执行一次返回0.


3.fork完后,子进程和父进程继续执行fork调用之后的语句,是先执行父进程还是先执行子进程呢?apue2给出了答案:一般来说,在fork之后是父进程先执行还是子进程先执行是不确定的。这取决于所使用的调度算法。

分享到:
评论

相关推荐

    fork函数例程执行过程分析及说明

    本文档内容是我自己写的一个关于fork函数新建进程并对调用流程进行分析的文档。 运行环境是win7安装vmware虚拟机里的linux系统,直接gcc编译得到的执行结果。 看完次文档后即可对fork有一个比较系统的认识。

    Linux 中fork的执行的实例详解

    主要介绍了Linux 中fork的执行的实例详解的相关资料,需要的朋友可以参考下

    fork后子进程从哪里开始执行

    fork后子进程从哪里开始执行

    在win系统下模拟linux中的fork()函数执行过程与基础通信过程

    在win系统下模拟linux中的fork()函数执行过程与基础通信过程 备注清晰。

    fork使用例子

    一个使用fork的简单例子,用于说明fork如何工作,从什么地方开始重复执行

    linux下fork函数实例

    用fork创建子进程; 回答no执行父进程,yes执行父进程并复制进程的操作;在父进程将str3,str4接至str0中,并输出str0 ;在子进程中,将str1,str2接至str0中,并输出str0

    Linux下Fork与Exec使用

     对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的...

    java fork-join框架介绍

    fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的性能;设计的目的是为了处理那些可以被递归拆分的任务。

    JDK7中的ForkJoin模式

    而 JDK 7 中将会加入的 Fork/Join 模式是处理并行编程的一个经典的方法。虽然不能解决所有的问题,但是在它的适用范围之内,能够轻松的利用多个 CPU 提供的计算资源来协作完成一个复杂的计算任务。通过利用 Fork/...

    前端开源库-swint-fork

    前端开源库-swint-forkswint fork、swint的进程行为(fork、代码块的公共/单独执行等)管理器

    go-fork:go-fork为go流程提供类似fork的行为

    叉 Go fork是一个为Go提供类似fork的仿真的程序包。... Go fork不会从fork继续执行,而是从被调用的point处启动指定的goroutine.Init fork.Init() (通常在main()或init()早期)。 Go fork不会与子

    linux下fork系统调用分析

    设计do_fork,copy_process函数以及x86体系下系统调用执行过程。更多分析请看edsionte.com.linux下fork系统调用分析。设计do_fork,copy_process函数以及x86体系下系统调用执行过程。更多分析请看edsionte.comlinux下...

    fork,提供执行android测试的最快方法的库。.zip

    fork项目由以下工具组成:

    php多进程框架-模拟java多线程接口simple-fork-php.zip

    SimpleFork simple-fork-php 是基于 PCNTL 扩展的进程管理包,接口类似与 Java 的 Thread 和 Runnable 为什么要写 SimpleFork 多进程程序的编写相比较多线程编写更加复杂,需要考虑进程回收、同步、互斥、...

    Fork Join框架机制详解.docx

    Java提供Fork/Join框架用于并行执行任务,核心的思想就是将一个大任务切分成多个小任务,然后汇总每个小任务的执行结果得到这个大任务的最终结果。 这种机制策略在分布式数据库中非常常见,数据分布在不同的数据库的...

    php pcntl_fork和pcntl_fork 的用法

    父进程运行完了会接着运行子进程,这时子进程会从执行pcntl_fork()的那条语句开始执行(包括此函数),但是此时它返回的是零(代表这是一个子进程)。在子进程的代码块中最好有exit语句,即执行完子进程后立即就...

    fork函数和子函数进程

    易懂易用,对于初学者来说是个十分实用的对初学知识的巩固与了解。

    Linux系统中C语言编程创建函数fork()执行解析

    最近在看进程间的通信,看到了fork()函数,虽然以前用过,这次经过思考加深了理解。现总结如下

Global site tag (gtag.js) - Google Analytics