Unix环境编程:fork()简述

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unix环境编程:fork()简述相关的知识,希望对你有一定的参考价值。

《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()简述的主要内容,如果未能解决你的问题,请参考以下文章

UNIX环境高级编程第十七章

Unix环境高级编程进程关系

UNIX环境高级编程第九章

UNIX环境高级编程第八章

Unix/Linux编程实践教程

UNIX网络编程卷1 server程序设计范式1 并发server,为每一个客户请求fork一个进程