linux fork 函数目的

fork 函数透析

简单的使用fork函数也许是再简单不过吧!

开始思考,fork函数到底有什么作用,何时使用这个函数呢?这是我将透析fork的原因。

 

fork函数基本知识

fork函数的基本知识,将不会是本文讨论的重点。

 

写实拷贝页实现,说白了就是子进程和父进程共享数据,只有在需要的时候,才会去copy 操作。

fork 函数使用目的

本人思考:只要是需要处理多个独立任务的应用程序都应该用到fork来新建完全独立的进程来执行任务。

说白点就是在一个程序中启动另一个程序

当你要创建一个子进程的时候就用fork()函数,它一般有两种应用,

第一,创建一个子进程用来执行和父进程不同的代码段,这个在网络中应用比较广,比如服务器端fork一个子进程用来等待客户端的请求,当请求到来时,子进程响应这个请求,而父进程则继续等待客户端请求的到来;

第二,创建一个子进程用来执行和父进程不同的程序,这种应用往往 fork一个子进程之后立即调用exec族函数,exec族函数则调用新的程序来代替新创建的子进程。

 

说明;


fork一般用于实现并发操作,在网络编程中用的很多(主要用来实现并发服务器)。

服务器进程一般执行函数的流程是socket()->bind()->listen()->accept(),此后端口即进入阻塞状态,如客户端调用connect后,经tcp三路握手建立连接。

如果是迭代服务器的话,一般在listen()后接着一个for(;语句,把accept放在里面,只有在完成一个服务后才能为下一个用户提供服务,如:
listen();
for(;
{
  connfd=accept();
  service()...;
  close(connfd);
}

当操作比较耗时时,考虑实行并发服务,这时的for变为:
for(; 
{ 
  connfd=accept();
  if ((pid=fork()) == 0) 
  {
    close(listenfd);
    service() .... ;
    close connfd;
    exit(0)
  } 
  close(connfd);
}

 

 

vfork 函数

对fork函数有了理解,vfork 应该也是同理!

linux fork 函数目的,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。