Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: freex 26 Ledna 2008, 23:20:26

Název: Fork
Přispěvatel: freex 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();
}
Název: Re: Fork
Přispěvatel: Martin Majliš 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 (http://man.root.cz/2/fork/)
Okomentovany priklad na wikipedii (http://en.wikipedia.org/wiki/Fork_%28operating_system%29#Example)