Linux командасын біліңіз - күту

Атауы

wait, waitpid - процесті тоқтатуды күтіңіз

Синопсис

#include
#include

pid_t wait (int * мәртебесі );
pid_t waitpid (pid_t pid , int * мәртебесі , int опциялары );

Сипаттама

Күту функциясы ағымдағы процесті бала аяқталғанға дейін тоқтатады немесе сигнал жіберілгенге дейін қолданыстағы үдерісті тоқтатуға немесе сигнал өңдеу функциясын шақыруға дейін жеткізіледі. Егер бала қоңырау шалған уақытта («зомби» деп аталатын процесс) шықса, функция дереу қайтарылады. Бала пайдаланатын кез-келген жүйелік ресурстар босатылады.

Waitpid функциясы ағымдағы үрдістің орындалуын pid дәлелімен көрсетілген бала аяқталғанға дейін тоқтатады немесе ағымдағы әрекетті тоқтату немесе сигналды өңдеу функциясын шақыру үшін сигнал жеткізілгенге дейін. Егер pid сұраған баланың қоңырау шалу уақыты («зомби» деп аталатын процесс) шыққан болса, функция дереу қайтарылады. Бала пайдаланатын кез-келген жүйелік ресурстар босатылады.

Пидтің мәні мыналардың бірі болуы мүмкін:

<-1

яғни процесс тобының ID идентификаторы pid абсолюттік мәніне тең болатын кез келген еншілес процесті күтуді білдіреді.

-1

кез келген бала процесін күтуді білдіреді; бұл экспонаттар күтетін мінез-құлық.

0

яғни процестің топтық идентификаторы қоңырау шалу процесіне тең болатын кез келген еншілес процесті күтуді білдіреді.

> 0

яғни процесінің идентификаторы pid мәніне тең баланы күтуді білдіреді.

Опциялардың мәні мынадай тұрақты мәндердің нөл немесе нөлден OR:

WNOHANG

егер бала шықпаса дереу оралу керек.

WUNTRACED

яғни тоқтатылған балаларға қайтаруды және мәртебесі туралы хабарланбауды білдіреді.

(Тек Linux нұсқалары үшін, төменде қараңыз.)

Егер мәртебе NULL емес болса, күту немесе waitpid күйі мәртебесі туралы ақпаратты мәртебеге сәйкес орналасқан жерде сақтаңыз.

Бұл мәртебені төмендегі макростармен бағалауға болады (бұл макростар стат буферін ( int ) аргумент ретінде қабылдайды: буфер үшін көрсеткіш емес!):

WIFEXITED ( мәртебесі )

бала қалыпты жағдайда шыққан болса нөлге тең емес.

WEXITSTATUS ( мәртебесі )

баланың қайтару кодексінің сегіз сегментін азайтады, ол аяқталуына шақырудың аргументі ретінде анықталуы мүмкін немесе негізгі бағдарламадағы қайтару туралы мәлімдеме ретінде дәлел бола алады. WIFEXITED нөлден тыс болса, бұл макрос бағалануы мүмкін.

WIFSIGNALED ( мәртебесі )

егер бала процесі ұсталмаған сигналға байланысты шықса, шын мәнін қайтарады.

WTERMSIG ( мәртебесі )

бала процесінің аяқталуына әкелетін сигналдың санын қайтарады. Бұл макрос WIFSIGNALED нөлге тең болмаса ғана бағалануы мүмкін.

WIFSTOPPED ( мәртебесі )

қайтаруды тудырған бала үдерісі тоқтаса, шын мәнін қайтарады; бұл WUNTRACED арқылы қоңырау жасалса ғана мүмкін.

WSTOPSIG ( мәртебесі )

баланың тоқтауын тудырған сигналдың санын қайтарады. Бұл макрос тек WIFSTOPPED нөлден тыс болған жағдайда ғана бағалануы мүмкін.

Unix бағдарламасының кейбір нұсқалары (мысалы, Linux, Solaris, бірақ AIX, SunOS емес) сонымен қатар, бала процесі ядродан бас тартылғанын тексеру үшін макрос WCOREDUMP ( мәртебесі ) анықтайды. Тек қана #ifdef WCOREDUMP ... #endif ішіне қолданыңыз.

Қайтару мәні

Балаға арналған WNOHANG пайдаланылған және ешқандай бала болмаған немесе оның қатесі бойынша -1 нөлден шыққан (бұл жағдайда errno тиісті мәнге орнатылған) баланың процесс идентификаторы.

Қателер

ECHILD

егер процесс көрсетілген болса pid жоқ немесе шақыру процесінің баласы емес. (SIGCHLD әрекеті SIG_IGN орнатылса, бұл өзіңіздің балаңыз үшін болуы мүмкін, сонымен қатар LINUX NOTES бөлімін қараңыз).

EINVAL

егер опциялар аргументі жарамсыз болса.

EINTR

егер WNOHANG орнатылмаса және бұғатталған сигнал немесе SIGCHLD ұсталды.