码迷,mamicode.com
首页 > 其他好文 > 详细

Unix环境编程:fork()简述

时间:2017-10-31 12:54:37      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:print   不能   执行   目录   进程id   不同   details   window下   资源   

《Unix环境高级编程》中,看到fork函数不能理解,特此记录。

Unix编程环境下,一个现有的进程可以调用fork函数创建一个新进程。Unix下的fork函数,和window下的thread使用方式不同。

1.fork如何创建子进程

  fork的翻译为叉子,分叉。

  意思是,调用fork形成一个分支,这个分支就是子进程。

  子进程将获得父进程所拥有的数据空间、堆和栈资源的副本,即两个进程在之后的执行过程中互不干扰。

2.fork函数执行一次,返回两次

  执行一次:在父进程中执行一个

  返回两次:当父进程进行完fork后,此时已经有两个进程了,分别是父进程和子进程。fork函数将分别给两个进程返回值。

  fork返回给子进程的是0,返回给父进程的是子进程的进程ID

  所以编写程序的时候可以这么写

if((pid=fork())<0)
{
  printf("create error");        
}
else if(pid==0)
{
  printf("zijincheng");  
}
else
{
  printf("fujincheng");  
}

  fork后,

  子进程执行这代码时,pid=0,打印出zijincheng

  父进程执行时,pid是子进程的进程ID,即pid>0,打印出fujincheng

3.父进程和子进程各有自己的数据空间。

 

参考目录:http://blog.csdn.net/jason314/article/details/5640969

Unix环境编程:fork()简述

标签:print   不能   执行   目录   进程id   不同   details   window下   资源   

原文地址:http://www.cnblogs.com/hufangtao/p/7760410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!