အမည်
, waitpid စောင့်ဆိုင်း - အဘို့အစောင့်ဆိုင်း ဖြစ်စဉ်ကို ရပ်စဲ
အနှစ်ချုပ်
#include
#include
pid_t ချောင်းမြောင်း (int * status ကို);
pid_t waitpid (pid_t PID, int * အခြေအနေ, int options များ);
ဖေါ်ပြချက်
ကလေးတစ်ဦးမထွက်မှီတိုင်အောင်, ဒါမှမဟုတ်တစ်ဦး signal ကိုအဘယ်သူ၏အရေးယူလက်ရှိဖြစ်စဉ်ကိုရပ်ဆိုင်းဖို့ဒါမှမဟုတ် function ကိုကိုင်တွယ်နေတဲ့ signal ကိုခေါ်ခြင်းဖြစ်ပါတယ်ကယ်နှုတ်တော်မူ၏ဖြစ်ပါတယ်သည်အထိချောင်းမြောင်း function ကိုလက်ရှိလုပ်ငန်းစဉ်၏ကွပ်မျက်ရပ်ဆိုင်း။ ကလေးတစ်ဦးပြီးသားခေါ်ဆိုမှု (ကဒါခေါ် "ဖုတ်ကောင်" ဖြစ်စဉ်ကို) ၏အချိန်အားဖြင့်မထွက်ပြီဆိုရင်, function ကိုချက်ချင်းပြန်လာ။ ကလေးသူငယ်အခကအသုံးပြုမဆိုသည့်စနစ်အရင်းအမြစ်များကိုလွတ်မြောက်လာကြသည်။
အဆိုပါ PID အငြင်းအခုံများကသတ်မှတ်ထားသောအဖြစ် waitpid function ကိုကလေးတစ်ဦးသည်အထိလက်ရှိလုပ်ငန်းစဉ်၏ကွပ်မျက်ရပ်ဆိုင်းမထွက်ဖြစ်ပါတယ်, ဒါမှမဟုတ်တစ်ဦး signal ကိုအဘယ်သူ၏အရေးယူလက်ရှိဖြစ်စဉ်ကိုရပ်ဆိုင်းဖို့ဒါမှမဟုတ် function ကိုကိုင်တွယ်နေတဲ့ signal ကိုခေါ်ခြင်းဖြစ်ပါတယ်ကယ်နှုတ်တော်မူ၏ဖြစ်ပါတယ်အထိပါပဲ။ PID နေဖြင့်မေတ္တာရပ်ခံအဖြစ်ကလေးတစ်ဦးပြီးသားခေါ်ဆိုမှု (ကဒါခေါ် "ဖုတ်ကောင်" ဖြစ်စဉ်ကို) ၏အချိန်အားဖြင့်မထွက်ပြီဆိုရင်, function ကိုချက်ချင်းပြန်လာ။ ကလေးသူငယ်အခကအသုံးပြုမဆိုသည့်စနစ်အရင်းအမြစ်များကိုလွတ်မြောက်လာကြသည်။
PID ၏တန်ဖိုးတစ်ဦးဖြစ်နိုင်သည်
<-1
အရာသည်အဘယ်သူ၏ဖြစ်စဉ်ကိုအုပျစု ID ကို PID ၏အကြွင်းမဲ့အာဏာတန်ဖိုးညီမျှသည်ဆိုကလေးကဖြစ်စဉ်ကိုစောင့်ဆိုင်းရန်ကိုဆိုလိုပါသည်။
-1
အရာမဆိုကလေးကဖြစ်စဉ်ကိုစောင့်ဆိုင်းဖို့ကိုဆိုလိုတယ်, ဒီပြပွဲစောင့်ဆိုင်းရသောတူညီတဲ့အပြုအမူဖြစ်ပါတယ်။
0 င်
အရာသည်အဘယ်သူ၏ဖြစ်စဉ်ကိုအုပ်စုတစ်စုမဆိုကလေးကဖြစ်စဉ်ကိုစောင့်ဆိုင်းရန်ကိုဆိုလိုပါသည် ID ကို အဆိုပါခေါ်ဆိုမှုလုပ်ငန်းစဉ်၏ကြောင်းနှင့်ညီမျှသည်။
> 0 င်
အရာသည်အဘယ်သူ၏ဖြစ်စဉ်ကို ID ကို PID ၏တန်ဖိုးနှင့်ညီမျှသည်ထိုသူငယ်ကိုစောင့်ဆိုင်းရန်ကိုဆိုလိုပါသည်။
ရွေးချယ်မှုများ၏တန်ဖိုးသည်အောက်ပါရုံကလွဲပြီးသုညသို့မဟုတ်ထိုထက်ပိုတစ်ခု OR ဖြစ်ပါသည်:
WNOHANG
အရာမျှမကလေးသည်မထွက်လျှင်ချက်ချင်းပြန်သွားဖို့ကိုဆိုလိုသည်။
WUNTRACED
အရာကိုလည်းရပ်တန့်နေသောသားသမီးတို့အဘို့ကိုပြန်သွားဖို့ကိုဆိုလိုတယ်နှင့်သူ၏ status ကိုအစီရင်ခံထားမထားပါဘူး။
(Linux ကိုသာရှေးခယျြစရာဘို့, ကိုအောက်တွင်ကြည့်ပါ။ )
status ကို null မဟုတ်ပါဘူးလျှင်, တည်နေရာအတွက်စောင့်ဆိုင်းသို့မဟုတ် waitpid စတိုးဆိုင် status ကိုသတင်းအချက်အလက် status ကိုကထောက်ပြသည်။
ဤသည် status ကိုအောက်ပါဘာလို့လဲဆိုတော့ Micro စနစ်နဲ့အခြားသော (!, ဤဘာလို့လဲဆိုတော့ Micro စနစ်နဲ့အခြားသောအငြင်းအခုံ --- မကြားခံတစ်ဦး pointer အဖြစ် Stat ကြားခံ (တစ်ဦး int) ယူ) နဲ့အကဲဖြတ်နိုင်ပါတယ်:
WIFEXITED (အခြေအနေ)
ကလေးသူငယ်အခပုံမှန်မထွက်လျှင် Non-သုညဖြစ်ပါတယ်။
WEXITSTATUS (အခြေအနေ)
(မှထွက်ရန်ဖုန်းခေါ်ဖို့အငြင်းအခုံကဲ့သို့) သို့မဟုတ်အဓိကအစီအစဉ်တွင်ပြန်လည်ကြေညာချက်အဘို့အငြင်းအခုံအဖြစ်သတ်မှတ်ထားခဲ့ကြရသောရပ်စဲသောသူငယ်၏ပြန်လာကုဒ်၏အနည်းဆုံးသိသိသာသာရှစ် bits သည်တန်ဖိုး။ WIFEXITED Non-သုညပြန်ရောက်လျှင်ဤသည်မက္ကရိုသာအကဲဖြတ်နိုင်ပါတယ်။
WIFSIGNALED (အခြေအနေ)
ကလေးသူငယ်အခဖြစ်စဉ်ကိုဘာဖြစ်လို့လဲဆိုတော့ဖမ်းမိမခံခဲ့ရသည့်အချက်ပြ၏မထွက်လျှင်စစ်မှန်တဲ့ပြန်လည်ရောက်ရှိ။
WTERMSIG (အခြေအနေ)
အဆုံးသတ်ခြင်းမှထိုသူငယ်ဖြစ်စဉ်ကိုဖြစ်ပေါ်စေကြောင်းအချက်ပြ၏နံပါတ်ပြန်လည်ရောက်ရှိ။ WIFSIGNALED Non-သုညပြန်ရောက်လျှင်ဤသည်မက္ကရိုသာအကဲဖြတ်နိုင်ပါတယ်။
WIFSTOPPED (အခြေအနေ)
ပြန်လာလက်ရှိရပ်တန့်နေသည်စေသောအရာကလေးကဖြစ်စဉ်ကိုလျှင်စစ်မှန်တဲ့ပြန်လည်ရောက်ရှိ; ခေါ်ဆိုမှု WUNTRACED သုံးပြီးပြုမိခဲ့လျှင်ဒီသာဖြစ်နိုင်သည်။
WSTOPSIG (အခြေအနေ)
ကလေးသူငယ်အခကိုရပ်တန့်စေသောအချက်ပြမှု၏နံပါတ်ပြန်လည်ရောက်ရှိ။ WIFSTOPPED Non-သုညပြန်ရောက်လျှင်ဤသည်မက္ကရိုသာအကဲဖြတ်နိုင်ပါတယ်။
Unix ကအချို့သည်ဗားရှင်း (ဥပမာ Linux, Solaris, ဒါပေမယ့်မရ AIX, SunOS) ကိုလည်းကလေးကဖြစ်စဉ်ကိုအဓိကစွန့်ပစ်ရှိမရှိစမ်းသပ်ဖို့တစ်နိုင်တဲ့ macro WCOREDUMP (အခြေအနေ) define ။ #ifdef WCOREDUMP အတွက်ပူးတွဲဒီ ... #endif သာလျှင်အသုံးပြုပါ။
သို့ပြန်သွားသည် Value ကို
အဆိုပါဖြစ်စဉ်ကိုမထွက်သောသူငယ်၏ ID ကို, ဒါမှမဟုတ်သုည WNOHANG အသုံးပြုခဲ့သည်နှင့်မျှမကလေးသည်မရရှိနိုင်ခဲ့, ဒါမှမဟုတ် -1 အမှားအပေါ် (အမှု errno သင့်လျော်တဲ့တန်ဖိုးသတ်မှတ်ထားတဲ့အတွက်) ပါ။
မှားယွင်းမှုများ
ECHILD
ထိုလုပ်ငန်းစဉ်အတွက်သတ်မှတ်ထားသောလျှင် PID မတည်ရှိသို့မဟုတ်ခေါ်ဆိုမှုလုပ်ငန်းစဉ်၏ကလေးတစ်ဦးမဟုတ်ပါဘူး။ (SIGCHLD များအတွက်အရေးယူမှု SIG_IGN ဟုသတ်မှတ်လျှင်ဤသည်တဦးတည်းရဲ့ကိုယ်ပိုင်လေးအတွက်ဖြစ်ပျက်နိုင်ပါတယ်။ ဒါ့အပြင်ချည် ပတ်သက်. Linux မှတ်စုများအပိုင်းကိုကြည့်ပါ။ )
EINVAL
ရှေးခယျြစရာအငြင်းအခုံမမှန်ကန်ပါလျှင်။
EINTR
WNOHANG မသတ်မှတ်ခံခဲ့ရကာပြန်ဖွင့် signal ကိုတစ်ခုသို့မဟုတ် SIGCHLD ဖမ်းမိခဲ့သည်။ လျှင်