Сазнајте Линук Цомманд - сачекајте

Име

чекајте, чекајте - чекајте за завршетак процеса

Синопсис

#инцлуде <сис / типес.х>
#инцлуде <сис / ваит.х>

пид_т чекај (инт * статус );
пид_т ваитпид (пид_т пид , инт * статус , инт опције );

Опис

Функција чекања суспендује извршење текућег процеса све док дијете не изађе, или док се не достави сигнал чија акција ће прекинути тренутни процес или позвати функцију пријеноса сигнала. Ако је дете већ изашло до времена позива (такозвани процес "зомби"), функција се одмах враћа. Сваки системски ресурс који користи дете се ослобађа.

Функција ваитпид- а суспендује извршење текућег процеса све док дете не одреди пид- аргумент није изашао, или док се не достави сигнал чија је акција да заврши тренутни процес или да позове функцију пријеноса сигнала. Ако дете, као што је затражено од стране пид- а, већ изашло до времена позива (такозвани процес "зомби"), функција се одмах враћа. Сваки системски ресурс који користи дете се ослобађа.

Вредност ПИД-а може бити једна од:

<-1

што значи да чека било који дечији процес чији је ИД процеса процеса једнак апсолутној вриједности пид-а .

-1

што значи да чека било који дечији процес; ово је исто понашање које чека доказне предмете.

0

што значи да чека било који дечији процес чији је ИД процеса процеса једнак оном у процесу позива.

> 0

што значи да чека дијете чији је ИД процеса једнак вриједности пид-а .

Вредност опција је ОР од нуле или више од следећих константи:

ВНОХАНГ

што значи да се одмах врати ако ниједно дете не изађе.

ВУНТРАЦЕД

што значи да се такође враћају за децу која су заустављена и чији статус није пријављен.

(За опције само за Линук, погледајте доле.)

Ако статус није НУЛЛ , сачекајте или чекајте да сачувате информације о статусу на локацији коју указује статус .

Овај статус се може процијенити помоћу сљедећих макроа (ови макрои узимају стат буфф ( инт ) као аргумент --- не показивач ка пуферу!):

ВИФЕКСИТЕД ( статус )

није нула ако је дете нормално изашло.

ВЕКСИТСТАТУС ( статус )

оцењује најмање значајне осам бита повратног кода дјетета које је прекинуто, што је можда постављено као аргумент за позив за излаз () или као аргумент за повратну изјаву у главном програму. Овај макро се може проценити само ако је ВИФЕКСИТЕД вратио нула.

ВИФСИГНАЛЕД ( статус )

враћа труе ако је дечији процес изашао због сигнала који није ухваћен.

ВТЕРМСИГ ( статус )

враћа број сигнала који је довела до прекида процеса детета. Овај макро се може проценити само ако је ВИФСИГНАЛЕД вратио нула.

ВИФСТОППЕД ( статус )

враћа труе ако је дечији процес који је изазвао повратак тренутно заустављен; ово је могуће само ако је позив обављен користећи ВУНТРАЦЕД .

ВСТОПСИГ ( статус )

враћа број сигнала који је довела до заустављања детета. Овај макро се може проценити само ако је ВИФСТОППЕД вратио нула.

Неке верзије Уник-а (нпр. Линук, Соларис, али не и АИКС, СунОС) такође дефинишу макро ВЦОРЕДУМП ( статус ) да би тестирали да ли је дечији процес одбацио језгро. Користите само ово у #ифдеф ВЦОРЕДУМП ... #ендиф.

Повратна вредност

Идентификациони број детета који је изашао или нула, ако је ВНОХАНГ коришћен, а ниједно дете није било на располагању или -1 на грешку (у том случају је еррно подешен на одговарајућу вриједност).

Грешке

ЕЦХИЛД

ако је процес наведен у ПИД не постоји или није дете процеса позивања. (Ово може да се деси за своје дијете ако је акција за СИГЦХЛД постављена на СИГ_ИГН. Такође погледајте одељак ЛИНУКС НОТЕС абоут тхреадс.)

ЕИНВАЛ

ако је аргумент опције невељаван.

ЕИНТР

ако ВНОХАНГ није подешен и деблокиран сигнал или СИГЦХЛД је ухваћен.