Ismerje meg a Linux parancsot - várjon

Név

wait, waitpid - várjon a folyamat befejezésére

Szinopszis

#include
#include

pid_t wait (int * állapot );
pid_t waitpid (pid_t pid , int * státusz , int opciók );

Leírás

A várakoztatási funkció felfüggeszti az aktuális folyamat végrehajtását mindaddig, amíg egy gyermek nem lépett ki, vagy amíg egy jel nem érkezik, akinek feladata az aktuális folyamat leállítása vagy egy jelkezelési funkció hívása. Ha egy gyermek már kilépett a hívás idején (ún. "Zombi" folyamat), a funkció azonnal visszatér. A rendszer által használt rendszererőforrások szabadulnak fel.

A waitpid függvény felfüggeszti az aktuális folyamat végrehajtását mindaddig, amíg a pid argument által meghatározott gyermek nem lépett ki, vagy amíg egy jel nem érkezik, akinek feladata az aktuális folyamat leállítása vagy egy jelkezelési funkció hívása. Ha a pid által kért gyermek már kilépett a hívás idején (ún. "Zombi" folyamat), akkor a funkció azonnal visszatér. A rendszer által használt rendszererőforrások szabadulnak fel.

A pid értéke lehet:

<-1

ami azt jelenti, hogy várni kell minden olyan gyermekprocesszust, amelynek folyamatcsoport azonosítója megegyezik a pid abszolút értékével.

-1

ami azt jelenti, hogy várni kell minden gyermeki folyamatra; ez ugyanaz a viselkedés, amely várakozik a kiállításokon.

0

ami azt jelenti, hogy várni kell minden olyan gyermekfolyamatra, amelynek a folyamatcsoport azonosítója megegyezik a hívási folyamatéval.

> 0

ami azt jelenti, hogy várni kell a gyermeket, akinek a folyamatazonosítója megegyezik a pid értékével.

Az opciók értéke az alábbi konstansok közül nulla vagy több:

WNOHANG

ami azt jelenti, hogy azonnal vissza kell térni, ha egyetlen gyermek sem távozott.

WUNTRACED

ami azt jelenti, hogy visszaállnak a megállt gyermekek számára is, akiknek státuszát nem jelentették be.

(Csak Linux-opciók esetén lásd alább.)

Ha az állapot nem NULL , várjon, vagy waitpid tárolja az állapotstatisztikát az állapot szerint mutatott helyen.

Ezt az állapotot a következő makrókkal lehet kiértékelni (ezek a makrók az ütközőt mutató argumentumként az ütközőpultot ( int-t ) veszik):

WIFEXITED ( státusz )

nem nulla, ha a gyermek normálisan kilép.

WEXITSTATUS ( státusz )

értékeli a gyermek visszatérési kódjának legkevésbé lényeges nyolc bitjét, amely megszűnt, és amelyet a kilépési () hívás alapjául lehet beállítani, vagy a fő programban a visszatérési utasítás érvelése. Ez a makró csak akkor értékelhető, ha a WIFEXITED nem nulla.

WIFSIGNALED ( állapot )

akkor igaz, ha a gyermek folyamat kilépett a nem fogott jel miatt.

WTERMSIG ( állapot )

visszaadja annak a jelnek a számát, amely a gyermek folyamatát megszüntette. Ez a makró csak akkor értékelhető, ha a WIFSIGNALED nem nulla.

WIFSTOPPED ( státusz )

akkor igaz, ha a visszaszolgáltatásot okozó gyermekfolyamat jelenleg leállt; ez csak akkor lehetséges, ha a hívást WUNTRACED használatával végezték el .

WSTOPSIG ( állapot )

visszaadja annak a jelnek a számát, amely miatt a gyermek leállt. Ez a makró csak akkor értékelhető, ha a WIFSTOPPED nem nulla.

A Unix néhány verziója (pl. Linux, Solaris, de nem AIX, SunOS) makró WCOREDUMP ( állapot ) meghatározására is képes annak tesztelésére, hogy a gyermek feldolgozza a dömpingelt magot. Csak ezt használja a #ifdef WCOREDUMP ... #endif fájlban.

Visszatérési érték

A gyermek kilépett vagy nulla, ha WNOHANG- ot használtak, és gyermek nem volt elérhető, vagy -1 hiba esetén (ebben az esetben az errno megfelelő értékre van állítva).

hibák

ECHILD

ha a A pid nem létezik, vagy nem hívja meg a hívó folyamatot. (Ez történhet a saját gyermeke számára, ha a SIGCHLD művelet SIG_IGN-re van állítva. Lásd még a LINUX NOTES rész a szálakról.)

EINVAL

ha az opció argumentum érvénytelen.

Eintr

ha a WNOHANG nem lett beállítva, és egy feloldatlan jelet vagy SIGCHLD- t fogtak.