Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: 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();
}
-
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)