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

fork()函数问题

    来源: 互联网  发布时间:2016-06-08

    本文导语:  程序1: #include main() { fork(); fork(); } 程序2: #include main() { fork(); fork(); fork(); fork(); } 程序一产生了4个进程,而程序二产生了8个进程, 请问一下,为什么??? 请教!!! | 第一个程序产生4...

程序1:
#include
main()
{
fork();
fork();
}

程序2:
#include
main()
{
fork();
fork();
fork();
fork();
}

程序一产生了4个进程,而程序二产生了8个进程,
请问一下,为什么???
请教!!!

|
第一个程序产生4个对,第二个应该产生16个才对。

fork();//1个进程编程了2个
fork();//2个进程都执行fork(),2个进程变成了4个
fork();//4个进程都执行fork(),4个进程变成了8ge
。。。。

|
例子2 我觉得应该产生16个进程啊

fork()会对子进程进行保存环境,然后继续执行父进程,某一时刻子进程会被调度的

fork()-> p -> fork()-> pp ->fork()-> ppp ->  fork()-> pppp  same process +1
                                                   -> pppc               +1      
                                     ppc -> fork() -> ppcp  same one     +1
                                                   -> ppcc               +1

                       pc ->fork()-> pcp -> fork() -> pcpp               +1
                                                   -> pcpc               +1
                                  -> pcc -> fork() -> pccp               +1
                                                   -> pccc               +1

         c -> fork() -> cp -> fork() -> cpp -> fork() -> cppp            +1
                                                      -> cppc            +1
                                        cpc -> fork() -> cpcp            +1
                                                      -> cpcc            +1
                        cc -> fork() -> ccp -> fork() -> ccpp            +1
                                                      -> ccpc            +1
                                        ccc -> fork() -> cccp            +1
                                                      -> cccc            +1


|
你可以试一试:

int main(int argc, char * argv[])
{
   fork();
   fork();
   fork();
   fork();
   sleep(20);
   return 0;
}

ps -ef|grep test

|
楼主,你这是不负责任的迭代。

你4个fork,迭代了8个返回。
一共16个进程。


fork后一定要判断pid,保证进程的条件跳转。

|
楼上,结果应该是16个A

|
test是你编译后的程序

|
我是来学习的……

    
 
 

您可能感兴趣的文章:

  • 还是有关fork的问题,fork在一个函数中调用,我被搞胡涂了
  • 如何理解fork函数返回2次啊?
  • fork函数的源代码在哪呢
  • linux的fork()函数
  • minGW编译带fork函数的问题?
  • Linux fork() 函数
  • 关于fork()函数
  • fork函数的理解。。
  • fork函数,在线等待,马上结贴。谢谢!!!!!!!!!!!!
  • 关于fork函数
  • fork函数详解?
  • fork函数的处理流程
  • 执行一个main函数程序时,unix操作系统调用什么创建进程?fork?newproc?
  • Linux下关于fork()的函数
  • 谁有unix下c的编程接口资料,如fork函数和killppid的说明
  • Linux fork函数的系统调用实现过程是什么呢?
  • linux fork 函数问题
  • 费解呀,函数fork()的疑惑?
  • 怎么理解fork()函数返回两次值?
  • linux fork()函数的疑惑
  • 一个fork的问题
  • 新手的问题关于fork?
  • fork() 父子进程执行顺序问题
  • fork的问题
  • 请教一个关于fork的问题。
  • 一个简单的fork问题(那个高手来帮忙呀)
  • 关于fork创建进程的一个问题
  • fork与socket问题
  • 关于fork()的一个问题!?
  • 问个关于fork的小问题
  • fork问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 奇怪:程序一fork子进程时就停住了,似乎根本不能fork子进程啊?
  • unix中的fork2与fork有设么区别?
  • 程序在fork前申请了内存若干,在fork后子进程是否需要释放父进程之前申请的内存
  • 急于明白Fork的用法.请提供中文解释.谢谢.
  • 关于fork的不解
  • 弱弱的问:fork和exec的区别是什么?
  • 关于fork的讨论
  • 关于fork的疑问?
  • fork之后的输出
  • exit和fork是什么关系?他们是怎么配合使用的?
  • 请教 linux的fork从什么版本开始支持COW?
  • c++ 和 fork
  • "fork(2)" 中这个2表示什么意思
  • 创建一个子进程,什么时候该用clone()而不是fork()?
  • fork()的疑问
  • 我对 fork() 意见相当大大
  • 请教,关于fork的用法?
  • fork getpid 返回值
  • PHP建站系统 Fork CMS
  • 关于fork(2)


  • 站内导航:


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

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

    浙ICP备11055608号-3