Linux Command ని నేర్చుకోండి - వేచి ఉండండి

పేరు

వేచి, waitpid - ప్రక్రియ రద్దు కోసం వేచి

సంక్షిప్తముగా

# చేర్చండి
# చేర్చండి

pid_t వేచి (int * స్థితి );
pid_t waitpid (pid_t pid , int * స్థితి , int ఎంపికలు );

వివరణ

ప్రస్తుత ప్రక్రియ యొక్క అమలును సక్రియంగా నిలిపివేస్తుంది, ఎందుకంటే ఒక పిల్లవాడు నిష్క్రమించారు లేదా ప్రస్తుత ప్రక్రియను తొలగించటానికి లేదా సిగ్నల్ హ్యాండ్లింగ్ ఫంక్షన్కు కాల్ చేయాల్సిన సిగ్నల్ పంపిణీ చేసేవరకు. ఒక పిల్లవాడు ఇప్పటికే కాల్ సమయం (ఒక "జోంబీ" ప్రక్రియ అని పిలవబడే) నుండి నిష్క్రమించినట్లయితే, ఫంక్షన్ వెంటనే వస్తుంది. పిల్లలచే ఉపయోగించబడిన ఏవైనా సిస్టమ్ వనరులు విముక్తి పొందాయి.

పిడ్ వాదన ద్వారా తెలుపబడినట్లుగా, ప్రస్తుత చర్య యొక్క అమలును నిలిపివేస్తుంది, లేదా ప్రస్తుత ప్రక్రియను తొలగించటానికి లేదా సిగ్నల్ హ్యాండ్లింగ్ ఫంక్షన్కు కాల్ చేయటానికి సిగ్నల్ పంపిణీ చేయబడే వరకు వేచి ఉండటం . పిడి ద్వారా అభ్యర్థించిన పిల్లవాడు ఇప్పటికే కాల్ సమయం (ఒక "జోంబీ" ప్రక్రియ అని పిలవబడే) నుండి నిష్క్రమించినట్లయితే, ఫంక్షన్ వెంటనే తిరిగి వస్తుంది. పిల్లలచే ఉపయోగించబడిన ఏవైనా సిస్టమ్ వనరులు విముక్తి పొందాయి.

పిడ్ విలువ ఒకటి కావచ్చు:

<-1

ఇది ఏ పిల్లల ప్రక్రియ కోసం వేచి ఉండాలో అనగా దాని ప్రాసెస్ సమూహం ID ని PID యొక్క ఖచ్చితమైన విలువకి సమానంగా ఉంటుంది.

-1

ఏ పిల్లల ప్రక్రియ కోసం వేచి అంటే; ఇది అదే ప్రవర్తన.

0

ఇది ఏ ప్రక్రియలో అయినా ప్రాసెస్ సమూహం ID కాలింగ్ ప్రాసెస్కు సమానంగా ఉంటుందని అర్థం.

> 0

ఇది దీని ప్రాసెస్ ID బిడ్ యొక్క విలువకు సమానంగా ఉన్న పిల్లల కోసం వేచి ఉండాలని అర్థం.

ఎంపికల విలువ కింది స్థిరాంకాలలో సున్నా లేదా అంతకంటే ఎక్కువ:

WNOHANG

ఏ పిల్లవాడు బయటికి వచ్చినా వెంటనే తిరిగి రావాలని అర్థం.

WUNTRACED

ఇది నిలిపివేయబడిన పిల్లల కోసం కూడా తిరిగి వస్తుంది మరియు దీని స్థితి నివేదించబడలేదు.

(Linux- మాత్రమే ఎంపికలు కోసం, క్రింద చూడండి.)

స్థితి NULL కాకపోతే, స్థితి ద్వారా చూపబడిన స్థానానికి వేచి ఉండండి లేదా వేచి ఉండండి .

ఈ స్థితి కింది మాక్రోస్తో విశ్లేషించబడుతుంది (ఈ మాక్రోలు వాదనగా స్టాఫర్ బఫర్ (ఒక పూర్ణాంకానికి ) --- బఫర్కు ఒక పాయింటర్ కాదు!):

WIFEXITED ( స్థితి )

పిల్లవాడు సాధారణంగా బయటికి వెళ్తే సున్నా కానిది.

WEXITSTATUS ( స్థితి )

బదిలీ చేయబడిన పిల్లల యొక్క తిరిగి కోడ్ యొక్క కనీసం ఎనిమిది బిట్లకు మూల్యాంకనం చేస్తుంది, ఇది నిష్క్రమించడానికి ( లేదా ) నిష్క్రమించడానికి కాల్కి వాదనగా సెట్ చేయబడి ఉండవచ్చు లేదా ప్రధాన కార్యక్రమంలో తిరిగి ప్రకటన కోసం వాదనగా చెప్పవచ్చు. WIFEXITED సున్నా కాని తిరిగి ఉంటే ఈ స్థూల విశ్లేషించవచ్చు.

WIFSIGNALED ( స్థితి )

పిల్లల సిగ్నల్ కారణంగా చికిత్సా విధానం చిక్కుకున్నట్లయితే అది నిజం తిరిగి వస్తుంది.

WTERMSIG ( స్థితి )

పిల్లల ప్రక్రియ రద్దు చేయటానికి కారణమైన సిగ్నల్ సంఖ్యను తిరిగి అందిస్తుంది. సున్నా కాని సున్నా తిరిగి ఉంటే ఈ స్థూల విశ్లేషించవచ్చు.

WIFSTOPPED ( స్థితి )

తిరిగి రావడానికి కారణమైన పిల్లల ప్రక్రియ ప్రస్తుతం నిలిపివేయబడితే, నిజం తిరిగి వస్తుంది; కాల్ వాన్ట్రేస్డ్ ఉపయోగించి చేసినట్లయితే ఇది సాధ్యమే .

WSTOPSIG ( స్థితి )

పిల్లల ఆపడానికి కారణమైన సిగ్నల్ సంఖ్యను తిరిగి అందిస్తుంది. WIFSTOPPED సున్నా కాని తిరిగి వచ్చినట్లయితే ఈ స్థూల విశ్లేషించబడుతుంది.

యునిక్స్ యొక్క కొన్ని సంస్కరణలు (ఉదా. లైనక్స్, సోలారిస్, కానీ AIX, సన్సోస్ ) కూడా బాల ప్రక్రియను డంప్ చేయబడ్డదా అని పరీక్షించడానికి ఒక స్థూలమైన WCOREDUMP ( స్థితి ) ను కూడా నిర్వచించవచ్చు. WCOREDUMP #ifdef లో ఈ పరివేష్టితాన్ని ఉపయోగించు ... మాత్రమే.

తిరిగి విలువ

WNOHANG ఉపయోగించినట్లయితే, లేదా చైల్డ్ అందుబాటులో ఉండకపోతే, లేదా -1 లోపం (ఏ సందర్భంలోనైనా సరియైన విలువకు సెట్ చేయబడినది) చైల్డ్ యొక్క ప్రాసెస్ ID, లేదా సున్నా.

లోపాలు

ECHILD

ప్రక్రియ పేర్కొన్నట్లయితే పిడ్ లేదు లేదా కాలింగ్ ప్రాసెస్ యొక్క బిడ్డ కాదు. (SIGCHLD కోసం చర్యను SIG_IGN కు సెట్ చేస్తే, ఇది సొంత పిల్లల కోసం జరగవచ్చు.దీని గురించి థ్రెడ్ల గురించి LINUX NOTES విభాగం చూడండి.)

EINVAL

ఎంపికల వాదన చెల్లనిది అయితే.

EINTR

WNOHANG సెట్ చేయకపోతే మరియు అన్బ్లాక్డ్ సిగ్నల్ లేదా SIGCHLD క్యాచ్ చేయబడి ఉంటే .