>Pomocí funkce fork() se vytvoří duplicitní kopie >aktuálního procesu, která se nazývá podřízený >proces. Nadřízený proces pokračuje ve své >existenci a v realizaci svého kódu následujícího >po volání funkce fork(). Podřízený proces >realizuje stejný program od stejného místa. Funkce >fork() vrací jiný návratový kód nadřízenému >procesu a jiný podřízenému procesu. Návratovou >hodnotou v nadřízeném procesu je identifikační >číslo podřízeného procesu, návratovou hodnotou v >podřízeném procesu je nula. Díky tomuto faktu je >možné odlišit nadřízený proces od podřízeného při >psaní kódu.
Znacne nedokonaly odstavec. Ako aj kody po fork.. Tie hodnoty platia len pre uspesny fork pre neuspesny je navratova hodnota
Mas pravdu. Nicmene clanek je pro zacatecniky takze na nejake waitiky a signaly si radi pockame a nezapomen na to, ze je to testovaci priklad a ten hlavni program skonci tak ci tak a urcite zadny zombie nevznikne....
Nicmene mozna by nezaskodil nejaky sleep abych se presvedcila ze to fakt vypisuje ten process z forku.
Jestli se mohu pripojit, fork a vytvareni / ruseni potomku trochu vice rozvedte, protoze i zacatecnici se obcas uci na vetsich kouscich kodu.
A kdyz potom nemaji tuseni ze neco muze selhat tak se neprestavaji divit proc jim cela aplikace pada a pod. (vlastni zkusenosti).
Rovnez bych rekl ze kontrolovat navratove kody je potreba ucit se od zacatku uceni se programovani (to jsem to hezky napsal, zejo? :-)) - zase z vyseuvedeneho duvodu.
Petr
Vlezt do pasti C# ..... jazyk je to hezky, ale s tou otevrenosti .NET platformy to nebude tak hzave, jak bylo drive deklarovano. Podle nekterych zdroju urcite casti Microsoft intenzivne ze vsech stran patentuje a tak se muzem v budoucnu dockat ruznych nehezkych prevapeni, ktere mozna oceni akcinoari M$, ale uzivatele budou plakat ...... nechci byt nici rukojmi.
Ahoj,
prispivam uz trosku pozde, ale zrovna ted je to pro me aktualni. Protoze je to clanek pro zacatecniky, a fork() a exec() jsem jeste nikdy nepouzil, chci se zeptat na par drobnosti:
Jak je to s uvolnovanim zdroju? Co kdyz ma rodicovsky proces dynamicky alokovanou nejakou pamet, otevrene soubory ci zarizeni, namapovane soubory nebo jine veci. Je treba, aby toto vsechno potomek uvolnoval/uzaviral? Na co si dat pozor mezi spustenim fork() a exec()? Existuje nejaky soubor pravidel, co udelat mezi fork() a exec()?
Jestli nekdo z vas jeste bude tento prispevek cist a bude chtit odpovedet nebo doporucit nejake zdroje, moc mi to pomuze. Kdyz tak mi poslete prosim i mail. Dik.
Cuz,
syscall fork(), zduplicitni dany proces (viz. novy task_struct atd...) ... nemusis se bat o dynamickou pamet ci o otevrene soubory -> nebudou se ovlivnovat (resp. read-on-write metoda => zduplicidni se po prvnim pouziti jednim z techto dvou), takze se prakticky o nic starat nemusis. [jine je to s VLAKNAMA!!!]. Co se tyce exec, tak je to jednoduche ... stary program v pameti je nahrazen novym (+ ošetření).