fork



  • Hi,

    wie oft wird solaris ausgegeben? warum ist die antwort 8 und nicht 4? kann man das irgendwie grafisch darstellen?

    #include
    main()
    {
         int ret;
         ret=fork();ret=fork();ret=fork();ret=fork();
         if(!ret)
             printf("sun");
         else
             printf("solaris");
    }
    

  • Mod

    forker schrieb:

    Hi,

    wie oft wird solaris ausgegeben? warum ist die antwort 8 und nicht 4?

    Nach dem ersten fork hast du zwei Prozesse, die dann jeweils beide das zweite fork durchführen, und so weiter.

    kann man das irgendwie grafisch darstellen?

    Ja.



  • @SeppJ:

    jedes fork hat 2 returns:
    - return from child
    - return from parent

    fork
          fork
          fork
          fork
    
            fork
           /    \
          fork  fork
          fork  fork
          fork  fork
    
             fork
           /     \
          fork    fork
         /   \    /   \
       fork  fork fork fork
       fork  fork fork fork
    
                    fork
               /           \
             fork           fork
           /    \         /      \
        fork     fork    fork     fork
       / \      /  \     /   \    /   \
    fork fork fork fork fork fork fork fork
    

    d.h. solaris wird 8 mal ausgegeben?


Anmelden zum Antworten