关闭

(5)fork()

387人阅读 评论(1) 收藏 举报
一周没更新了吧。前几天ACM省赛,郁闷惨了。我怎么会遇到这种恶心事。昨天开始把我的虚拟机换成真正的操作系统了。那个累阿。。。。 
闲话不说,继续PROGRAMMING~~ 
我觉得题目这个函数很有必要多说一点。这个是我目前知道唯一linux下派生新线程的东东。一定要熟练运用。不然以后你写的服务器只能服务一个人鸟。嘻嘻。 
打个比方,fork函数的意思是。我是个领导(服务器主进程)。我在办公室。你(客户)来找我有事(accept连接上了),我分派(fork)给小弟(子线程)干。我还在办公室。你们两个干的什么我不知道了。 
只说理论不容易懂fork。 
看个程序先。 
  main()   
  {   
      pid_t   pid;   
      if((pid=fork())<0)   
      {   
          printf("error!");   
      }   
      else   
      {   
            if(pid==0)   
            printf("a/n");   
            else   
            printf("b/n");   
      }   
  }   
    结果是返回a,b或者b,a   
  因为fork调用将执行两次返回分别从子进程和父进程返回   
  由于父进程和子进程无关,父进程与子进程都可能先返回   
上边那两句是摘网上的。但是我认为写的不太全面。应该是子进程被先返回的几率大。 
这个程序的执行就是从fork调用开始开出了一个子进程。后边的判断语句是如果当前运行的是子进程。输出b。否则输出a。懂了没?懂了再来看个程序 
main()   
  {   
      pid_t   a_pid,b_fork;   
      if((a_pid=fork())<0)   
      {   
          printf("error!");   
      }   
      else   
      {   
            if(a_pid==0)   
            printf("b/n");   
            else   
            printf("a/n");   
      }   
   
      if(b_pid=fork()<0)   
      {   
          printf("error!");   
      }   
      else  main()   
  {   
      pid_t   a_pid,b_fork;   
      if(a_pid=fork()<0)   
      {   
          printf("error!");   
      }   
      else   
      {   
            if(a_pid==0)   
            printf("b/n");   
            else   
            printf("a/n");   
      }   
   
      if(b_pid=fork()<0)   
      {   
          printf("error!");   
      }   
      else   
      {   
            if(b_pid==0)   
            printf("c/n");   
            else   
            printf("a/n");   
      }   
  }  
这两个程序都是从网上摘的,不要学他的编程风格哦,丑死了。我看csdn和chinaunix上有说返回4个字母的,有说返回6个的。。。。N篇争论。晕了。我的跑出来是6个,其实本来就应该是6个。。。。。。WHY? 
留作思考。电脑快没电了。。。。。。明天中午贴这篇。知道的跟帖回复好。明天晚上再写吧。睡觉去了。HOHO 
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4766次
    • 积分:101
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论