fork

转载 2007年09月24日 22:10:00
pid=fork(); 
操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。新进程和原有进程的可执行程序是同一个程序;上下文和数据,绝大部分就是原进程(父进程)的拷贝,但它们是两个相互独立的进程!此时程序寄存器pc,在父、子进程的上下文中都声称,这个进程目前执行到fork调用即将返回(此时子进程不占有CPU,子进程的pc不是真正保存在寄存器中,而是作为进程上下文保存在进程表中的对应表项内)。问题是怎么返回,在父子进程中就分道扬镳。
父进程继续执行,操作系统对fork的实现,使这个调用在父进程中返回刚刚创建的子进程的pid(一个正整数),所以下面的if语句中pid<0, pid==0的两个分支都不会执行。
子进程在之后的某个时候得到调度,它的上下文被换入,占据 CPU,操作系统对fork的实现,使得子进程中fork调用返回0。所以在这个进程(注意这不是父进程,虽然是同一个程序,但是这是同一个程序的另外一次执行,在操作系统中这次执行是由另外一个进程表示的,从执行的角度说和父进程相互独立)中pid=0。这个进程继续执行的过程中,if语句中pid<0不满足,但是pid==0是true。

相关文章推荐

FORK()函数的理解

  • 2013年05月14日 00:33
  • 113KB
  • 下载

linux c 多进程fork基本用法及阻塞和非阻塞方式回收

linux c 多进程fork函数的基本用法及阻塞和非阻塞方式回收

Java并发Fork and join

  • 2014年09月01日 14:49
  • 419KB
  • 下载

线程基础:多任务处理(15)——Fork/Join框架(要点2)

Fork/Join Pool采用优良的设计、代码实现和硬件原子操作机制等多种思路保证其执行性能。其中包括(但不限于):计算资源共享、高性能队列、避免伪共享、工作窃取机制等。本文(以及后续文章)试图和读...

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

  • 2013年01月21日 12:40
  • 89KB
  • 下载

fork函数和子函数进程

  • 2012年07月19日 06:39
  • 97KB
  • 下载

Linux系统进程控制编程(二)——fork系统调用

作者:zieckey (http://zieckey.cublog.cn)     All Rights Reserved!     进程由fock函数创建,在unistd.h库中定义如下: ...
  • diy534
  • diy534
  • 2011年11月13日 04:11
  • 359

Fork/Join例子

  • 2017年04月09日 15:44
  • 19KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fork
举报原因:
原因补充:

(最多只允许输入30个字)