Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Fork  (Přečteno 1790 krát)

freex

  • Návštěvník
  • Příspěvků: 1
Fork
« kdy: 26 Ledna 2008, 23:20:26 »
Prosím nemohl by mi někdo říct a trošku vysvětlit kolik zablokovaných procesů v systému zůstane, pokud přeložím a spustím následující program? Diky

main()
{
    if (fork() == 0){
        fork();
        pause();
        }
   fork();
   fork();
   pause();
}
« Poslední změna: 27 Ledna 2008, 02:17:13 od Anna Taliánová »

Martin Majliš

  • Návštěvník
  • Příspěvků: 34
    • http://martin.majlis.cz/
Re: Fork
« Odpověď #1 kdy: 28 Ledna 2008, 10:18:39 »
Kód: [Vybrat]
     1 main()
     2 {
     3     if (fork() == 0){
     4         fork();
     5         pause();
     6         }
     7    fork();
     8    fork();
     9    pause();
    10 }

Co se deje: (predpoklad - vsechny forky se povedou - tzn. vytvori se potomek)

1.   1 proces
3.   Vytvori se potomek - a ten bude pokracovat na radku 4, rodic bude pokracovat radkem 7 (tzn. 1x rodic, 1x potomek)
4.   Potomek vytvori potomka (1x rodic, 1x potomek, 1x potomek potomka)
5.   Potomek ceka na signal.
7.   Rodic vytvori dalsiho potomka (1x rodic, 2x potomek, 1x potomek potomka)
8.   Rodic a vytvori potomka a potomek vytvori potomka (1x rodic, 3x potomek, 2x potomek potomka)
9.   Rodic + 2x potomek + 2x potomek potomka cekaji na signal.


Zaver: Na konci bude 6 procesu.
Fork - manualova stranka
Okomentovany priklad na wikipedii

 

Provoz zaštiťuje spolek OpenAlt.