Skip to main content

Чекајте - Линук Цомманд - Уник Цомманд

Anonim

Име

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

Синопсис

#инцлуде #инцлуде

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

Опис

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

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

Вредност пид може бити један од:

< -1

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

-1

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

0

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

> 0

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

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

ВНОХАНГ

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

ВУНТРАЦЕД

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Грешке

ЕЦХИЛД

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

ЕИНВАЛ

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

ЕИНТР

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