当前位置:  技术问答>linux和unix

fork()到底起什么作用

    来源: 互联网  发布时间:2015-08-17

    本文导语:  pid = fork();     if (pid > 0) {                       /* parent process */         printf ( "main() %s %s is now runing in background.n", _Product, _Version);         return 0 ;     } 如上程序,我开辟一个...

pid = fork();

    if (pid > 0) {                       /* parent process */
        printf ( "main() %s %s is now runing in background.n", _Product, _Version);
        return 0 ;
    }
如上程序,我开辟一个子进程是为了什么?
子进程拷贝父进程,两者独立运行还是相互通讯?
子进程是父进程的拷贝,那子进程起到什么具体作用?
再下新手,在线请教中,谢谢!

|
你不能根据某个技术来问他的目的是什么
而应该了解自己的目的是什么,然后用什么技术手段可以实现
别人无法知道你创建个子进程为什么?不同的程序创建之进程有不同的目的
技术是为了达到某个目的而存在的,fork()存在的目的就是为了生成子进程,子进程就可以做其它跟父进程没关的事情,或者相互依靠共同完成一件事情
父子进程是相互独立的,但通过一些进程通讯方法可以协作运行
子进程的具体作用就是:完成另一件事情

|
1、单就这一小段代码,从父进程首先调用fork,然后再exit,加上
printf ( "main() %s %s is now runing in background.n", _Product, _Version);
这句看来,是创建一个精灵进程的典型用法
2、子进程是父进程的复制品,但彼此都有独立的内存空间,需要通讯的话要同过IPC(InterProcess Communication)实现,包括管道、消息队列、信号量、共享存储、套接口等等
3、单就你这一小段代码根本看不出你的子进程做了什么

建议楼主先好好看看书

|
举个简单明了的例子吧。
以下是socket通讯,服务器的一小部分伪代码:

int pid;

while (1) {
   侦听端口;
   建立连接;
   if ((pid = fork()) == 0) {
       生成一个子进程。
       业务处理;
       关闭连接;
       退出子进程;
   }
   ....
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 奇怪:程序一fork子进程时就停住了,似乎根本不能fork子进程啊?
  • unix中的fork2与fork有设么区别?
  • 还是有关fork的问题,fork在一个函数中调用,我被搞胡涂了
  • 程序在fork前申请了内存若干,在fork后子进程是否需要释放父进程之前申请的内存
  • fork()函数入门级问题:fork()与进程数
  • 一个fork的问题
  • 新手的问题关于fork?
  • 如何理解fork函数返回2次啊?
  • 急于明白Fork的用法.请提供中文解释.谢谢.
  • 关于fork的不解
  • 弱弱的问:fork和exec的区别是什么?
  • 关于fork的讨论
  • 关于fork的疑问?
  • fork之后的输出
  • fork() 父子进程执行顺序问题
  • 关于fork创建进程的一个问题
  • exit和fork是什么关系?他们是怎么配合使用的?
  • 能说说fork到底用在什么方面吗 iis7站长之家
  • fork的问题
  • 请教 linux的fork从什么版本开始支持COW?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3