नाम
पर्खनुहोस्, रुटप्याड - प्रक्रिया समाप्तको लागि पर्खनुहोस्
सारांश
# sys / types.h> समावेश गर्नुहोस्
# sys / wait.h> समावेश गर्नुहोस्
pid_t प्रतीक्षा (int * स्थिति );
pid_t प्रतीक्षापद (pid_t pid , int * status , int options );
विवरण
पर्चा प्रकार्यले हालको प्रक्रियाको निष्पादन निलम्बित गर्दछ जबसम्म बच्चा बाहिर निस्कन्छ, वा सिग्नल डेलिभर नहुँदा जसको क्रियाकलापले हालको प्रक्रिया समाप्त गर्न वा सिङ्ग ह्यान्डलिंग प्रकार्यलाई कल गर्न थाल्छ। यदि एक बच्चाले पहिले नै कलको समय (एक भनिन्छ "ज़ोंबी" प्रक्रिया) बाट बाहिर निस्क्यो भने, प्रकार्य तुरुन्तै फर्काउँछ। बच्चा द्वारा प्रयोग गरिएको कुनै पनि प्रणाली स्रोतहरू मुक्त छन्।
वेपप्याड प्रकार्यले हालको प्रक्रियाको कार्यान्वयनलाई निलम्बित गर्दछ जबसम्म बच्चालाई pid तर्क द्वारा निर्दिष्ट गरिएको छ वा सिग्नल डेलिभर नभएसम्म जसको क्रियाकलापलाई वर्तमान प्रक्रिया समाप्त गर्न वा सिग्नल ह्यान्डलिंग प्रकार्यलाई कल गर्न सकिन्छ। यदि पिडद्वारा अनुरोध गरिएको बालबालिका पहिले नै कलको समयबाट बाहिर निस्किएको छ (एक तथाकथित "जम्बो" प्रक्रिया), प्रकार्य तुरुन्तै फर्काउँछ। बच्चा द्वारा प्रयोग गरिएको कुनै पनि प्रणाली स्रोतहरू मुक्त छन्।
पिडको मूल्य एक हुन सक्छ:
<-1
जसको मतलब कुनै पनि बाल प्रक्रिया को लागी प्रतीक्षा गर्ने को लागी जसको प्रक्रिया समूह आइडी पिड को पूर्ण मान को बराबर छ।
-1
जसको मतलब कुनै बालबालिकाको प्रक्रियाको लागि पर्खनु पर्दछ; यो त्यहि व्यवहार हो जुन प्रदर्शनीको प्रतीक्षा गर्दछ।
0
जसको मतलब कुनै पनि बाल प्रक्रिया को लागी प्रतीक्षा गर्ने को लागी जसको प्रक्रिया समूह आइडी कल प्रक्रिया प्रक्रिया को बराबर छ।
> 0
जसको मतलब बालिकाको लागि जसको प्रक्रिया आईडी पिडको मान बराबर छ।
विकल्पहरूको मान भनेको शून्य वा निम्न अवरोधहरूको अधिक हो:
WNOHANG
जसलाई कुनै बच्चा बाहिर निस्कन तुरुन्तै फर्काउन को लागी।
अवरोध
जसलाई बालबालिकाका लागि फर्काउने को लागी पनि मतलब छ, र जसको स्थिति रिपोर्ट गरिएको छैन।
(लिनक्स-मात्र विकल्पहरूको लागि, तल हेर्नुहोस्।)
यदि स्थिति NULL छैन भने, प्रतीक्षामा वा वेस्टप्याड भन्नाले स्टेटस जानकारी स्थानमा संकेत दिएको छ।
यो स्थिति निम्न म्याक्रोहरूको साथ मूल्याङ्कन गर्न सकिन्छ (यी म्याक्रोहरूले बत्तीमा एक पङ्क्ति छैन --- स्टेट बफर (एक इन्टि ) तर्कको रूपमा लिन्छन्!):
विफेट ( स्थिति )
यदि शून्य बच्चा सामान्यतया बाहिर जान्छ भने शून्य हो।
विक्टोरिया ( स्थिति )
बच्चाको फिर्ती कोडको कम्तीमा महत्त्वपूर्ण आठ बिटको मूल्यांकन गर्दछ जुन समाप्त भयो, जुन मुख्य कारणबाट बाहिर निस्कन ( वा ) कल गर्न तर्कको रूपमा सेट गरिएको हुन सक्छ वा मुख्य कार्यक्रममा रिटर्न बयानको लागि तर्क। यो म्याक्रो मात्र मूल्यांकन गर्न सकिन्छ यदि WIFEXITED गैर शून्य फर्काइएको छ।
WIFSIGNALED ( स्थिति )
यदि बच्चाको प्रक्रिया बाहिर सिग्न सिग्नलको कारणले बच्चाको प्रक्रिया बाहिर निस्केको हुन्छ।
WTERMSIG ( स्थिति )
बच्चाको प्रक्रिया समाप्त हुनको कारण संकेतको संख्या फर्काउँछ। यो म्याक्रो मात्र मूल्यांकन गर्न सकिन्छ यदि WIFSIGNALED गैर-शून्य फर्काइएको छ।
WIFSTOPPED ( स्थिति )
रिटर्न सही छ यदि बाल प्रक्रिया जसले फर्काउने कारण हाल रोकिएको छ; यो कल संभव छ यदि कल विन्ड्राकेसनको प्रयोग गरेर गरियो ।
WSTOPSIG ( स्थिति )
बच्चाको रोक्नको कारण संकेतको संख्या फर्काउँछ। यो म्याक्रो मात्र मूल्यांकन गर्न सकिन्छ यदि WIFSTOPPED गैर शून्य फर्काइएको छ।
युनिक्सका केही संस्करणहरू (जस्तै लिनक्स, सोलिसिस, तर AIX, SunOS) पनि म्याक्रो WCOREDUMP ( स्थिति ) को परिभाषित गर्नका लागि परीक्षण गर्न को लागी कि बच्चा प्रक्रिया कोर डम्प भएको हो। #fdef WCOREDUMP ... #endif मा यो संलग्न मात्र प्रयोग गर्नुहोस्।
फिर्ता मूल्य
WNOHANG प्रयोग भएको बालबालिकाको प्रक्रिया आईडी वा शून्यमा उपलब्ध थिएन र कुनै बाल उपलब्ध थिएन, वा -1 त्रुटिमा (कुन अवस्थामा गलत कुनै उपयुक्त मानमा सेट गरिएको छैन)।
त्रुटिहरू
ECHILD
यदि यो प्रक्रिया निर्दिष्ट गरिएको छ pid अवस्थित छैन वा कल गर्ने प्रक्रियाको बच्चा होइन। (यो एक आफ्नै बच्चाको लागि हुन सक्छ यदि SIGCHLD को लागि कार्य SIG_IGN मा सेट गरिएको छ। थ्रेडहरूको बारेमा LINUX नोट्स खण्ड पनि हेर्नुहोस्।)
EINVAL
यदि विकल्प तर्क अमान्य थियो।
EINTR
यदि वानहंग सेट गरिएको थिएन र एक अनलक रोकिएको संकेत वा सिगचिल पकडिएको थियो।