Lærðu Linux Command - bíddu

Nafn

bíddu, bíddu - bíddu eftir að ljúka ferlinu

Yfirlit

#include
#include

pid_t bíða (int * stöðu );
pid_t waitpid (pid_t pid , int * stöðu , int valkostir );

Lýsing

Biðvirkni stöðvar framkvæmd núverandi ferlis þar til barn er hætt, eða þar til merki er afhent sem aðgerð er að segja upp núverandi ferli eða að hringja í aðgerð til að meðhöndla merki. Ef barn hefur þegar hætt við upphaf símtals (svokölluð "uppvakninga" ferli) skilar virkni strax. Öll kerfi auðlindir notaðar af barninu eru frelsaðir.

Biðjið aðgerðin frestar framkvæmd núverandi ferlis þar til barn eins og tilgreint er með pid rifrinu er lokað eða þar til merki er afhent sem aðgerð er að binda enda á núverandi ferli eða til að hringja í aðgerð til að meðhöndla merki. Ef barn, eins og það hefur verið beðið um, hefur þegar lokið við upphaf símtalsins (svokölluð "uppvakninga" ferli), skilar aðgerðin strax. Öll kerfi auðlindir notaðar af barninu eru frelsaðir.

Verðmæti PID getur verið eitt af:

<-1

sem þýðir að bíða eftir hvaða barnferli sem ferli hóps auðkenni er jafnt að alger gildi pid .

-1

sem þýðir að bíða eftir einhverju barnsferli; þetta er sama hegðun sem bíða sýnir.

0

sem þýðir að bíða eftir hvaða barnferli sem ferli hóps auðkenni er jafnt og það sem hringt er í.

> 0

sem þýðir að bíða eftir barninu sem ferli kennitölu er jafnt við gildi pid .

Verðmæti valkostanna er OR eða núll eða fleiri af eftirfarandi stöðlum:

WNOHANG

sem þýðir að fara strax aftur ef ekkert barn er hætt.

WUNTRACED

sem þýðir einnig að koma aftur fyrir börn sem eru hætt og ekki hefur verið tilkynnt um stöðu þeirra.

(Fyrir Linux-eini valkosti, sjáðu hér að neðan.)

Ef staða er ekki NULL skaltu bíða eða bíða eftir að geyma stöðuupplýsingar á staðnum sem bent er á eftir stöðu .

Þessi staða er hægt að meta með eftirfarandi fjölvi (þessi makrólar taka statu biðminni ( int ) sem rök --- ekki bendilinn á biðminni!):

WIFEXITED ( staða )

er ekki núll ef barnið yfirgefur venjulega.

WEXITSTATUS ( staða )

metur að minnsta kosti marktækum átta bita af afturkóðanum barnsins sem sagt er upp, sem kann að hafa verið stillt sem rök fyrir símtali til að hætta () eða sem rök fyrir afturáritun í aðalforritinu. Þessi fjölvi er aðeins hægt að meta ef WIFEXITED skilaði ekki núlli.

WIFSIGNALED ( staða )

skilar satt ef barnið fer fram eftir merki sem var ekki veiddur.

WTERMSIG ( staða )

skilar fjölda merkisins sem olli því að barnið fer að hætta. Þessi fjölvi er aðeins hægt að meta ef WIFSIGNALED skilaði ekki núlli.

WIFSTOPPED ( staða )

skilar satt ef barnið ferli sem olli aftur er nú hætt; Þetta er aðeins mögulegt ef símtalið var gert með því að nota WUNTRACED .

WSTOPSIG ( staða )

skilar fjölda merkisins sem olli barninu að hætta. Þessi fjölvi er aðeins hægt að meta ef WIFSTOPPED skilaði ekki núlli.

Sumar útgáfur af Unix (td Linux, Solaris, en ekki AIX, SunOS) skilgreina einnig makró WCOREDUMP ( stöðu ) til að prófa hvort barnið vinnist í dálka . Notaðu aðeins þetta meðfylgjandi í #ifdef WCOREDUMP ... #endif.

Return Value

Aðferðarþáttur barnsins sem fór út, eða núll ef WNOHANG var notað og ekkert barn var í boði, eða -1 á villu (í því tilfelli errno er stillt á viðeigandi gildi).

Villur

ECHILD

ef ferlið sem tilgreint er í Pid er ekki til eða er ekki barn í starfinu. (Þetta getur gerst fyrir eigin barn ef aðgerðin fyrir SIGCHLD er stillt á SIG_IGN. Sjá einnig LINUX NOTES kafla um þræði.)

EINVAL

ef valkostargreinin var ógild.

EINTR

ef WNOHANG var ekki stillt og óblokkað merki eða SIGCHLD var veiddur.