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() && fork() || fork() .

OK,我们看一道有意思的问题: 1 2 3 4 5 6 7 #include int main() {   fork();   fork()&&fork()||fo...
  • Wen_dy
  • Wen_dy
  • 2015年05月08日 09:53
  • 1278

C fork()&&fork()||fork()

一道关于fork创建进程个数的题目: #include int main() {   fork(); fork()&&fork()||fork(); fork(); return 0; ...
  • qq_29233719
  • qq_29233719
  • 2016年12月11日 21:30
  • 375

fork之前之后文件描述符共享

在C程序中,文件由文件指针或者文件描述符表示。ISO C的标准I/0库函数(fopen, fclose, fread, fwrite, fscanf, fprintf等)使用文件指针,UNIX的I/O...
  • cws1214
  • cws1214
  • 2013年08月01日 15:36
  • 2340

Github上删除fork的仓库

github上的watch star fork的区别star: 如果想持续关注该项目就star一下,类似于收藏网页一样,直接把该仓库收藏watch: watch可以用来设置接收邮件提醒,就是在st...
  • Sugar_Z_
  • Sugar_Z_
  • 2015年11月23日 15:44
  • 3325

程序员必备知识——fork和exec函数详解

在学习UNIX编程时,必须要学习的一个函数为fork函数。fork函数也为面试中必定要问的一个问题,尤其是在BAT的面试中,fork函数相关问题更为面试笔试必考知识点。究其原因:该函数为UNIX中派生...
  • bad_good_man
  • bad_good_man
  • 2015年10月23日 18:59
  • 10231

git fork

http://bailong139.blog.163.com/blog/static/207238100201422412659845/ 需求:B要加入A的项目,不论是作为B的初始项目进行二...
  • joelovegreen
  • joelovegreen
  • 2015年01月20日 08:42
  • 5696

pid = fork() < 0与(pid = fork()) < 0

看下面这样一段程序:     pid_t pid;     int status;     if(pid = fork()         printf("fork error\n");...
  • HAOMCU
  • HAOMCU
  • 2012年02月28日 11:44
  • 5003

daemon编程规则(为什么要fork两次)

文章出处:http://blog.csdn.net/jeffgeng/article/details/5798338                     http://roz1987.blo...
  • ixidof
  • ixidof
  • 2011年08月24日 18:00
  • 3774

Linux进程,fork-专研精讲(实例讲解)!!!

创建进程有两种方式,1:由操作系统创建;2:由父进程创建 由操作系统创建的进程,它们之间是平等的,一般不存在资源继承关系(称之为:系统进程)。而对于由父进程创建的进程(子进程),它们和父进程之间是隶属...
  • msdnwolaile
  • msdnwolaile
  • 2016年05月14日 21:56
  • 2626

小白学c++之fork()函数

#include #include #include #include int main(int argc, const char* argv[]) { printf("hello,pid...
  • yangkaikwill
  • yangkaikwill
  • 2014年11月16日 10:40
  • 2334
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fork
举报原因:
原因补充:

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