A késobbiekben bemutatott példaprogramok (pl. majd a TCP alapú konkurrens szerver) muködésének megértéséhez fontos tisztában lenni azzal, hogy mi történik miután egy folyamat meghal (végrehajtja az exit() rendszerhívást vagy kill signalt küld önmagának, stb ...), hogy szerezhet errol tudomást a szülo folyamat.
Egy szülo-folyamat egy gyermek-folyamat befejezodésére a wait() rendszerhívással várakozhat. Egyetlen paramétere egy int típusú objektumra mutató pointer, ahova (a magasabb helyiértéku byteba) a meghalt gyermek exit-státusza kerül (ami 0 szokott lenni, ha nem volt hiba; egyébként nem 0, de ez inkább egy konvenció, aminek a betartása nem kötelezo) - ha a pointer nem NULL-pointer. Visszatérési értéke egyenlo a befejezodott gyermek-folyamat azonosítójával (ha van ilyen). Ha a folyamatnak nincs egyetlen (futó vagy befejezodött) gyermeke, akkor a visszatérési értéke -1.
A következo esetek lehetségesek miután egy gyermek-folyamat végrehajtotta az exit() rendszerhívást, ami után nincs visszaút:
signal(SIGCLD, SIG_IGN);
rendszerhívást. Ez azt eredményezi, hogy ezután ha egy gyermek meghal, a UNIX mag nem generál a szülonek SIGCLD signalt, a gyermek a zombie állapot kihagyásával örökre feledésbe merül.)
Még egy fontos dolog van, amin a UNIX készítoinek el kellett gondolkodniuk: mi legyen akkor, ha a szülo-folyamat hal meg elobb?
Ekkor a gyermekhez tárolt szülo-folyamat azonosító mezo érvénytelen folyamat-azonosítót tartalmaz! Ezt úgy oldották meg, hogy bevezettek egy speciális (1-es azonosítójú) folyamatot, az init folyamatot (ez indítja el a terminálokon a login: folyamatokat). Az "árva" gyermek-folyamatoknak ez lesz szülo-folyamatukként tárolva. Ez majd idonként figyeli, és megtisztítja a "halott árva zombie" folyamatok által lefoglalt processztábala-bejegyzésektol a processz-táblát. (Az init folyamat sosem hajt végre exit() rendszerhívást.)