नाम
प्रतीक्षा करें, प्रतीक्षा करें - प्रक्रिया समाप्त होने की प्रतीक्षा करें
सार
#शामिल pid_t प्रतीक्षा करें (int * स्थिति );pid_t waitpid (pid_t पीआईडी , int * स्थिति , int विकल्प );
रुकिए फ़ंक्शन वर्तमान प्रक्रिया के निष्पादन को तब तक निलंबित कर देता है जब तक कोई बच्चा बाहर नहीं निकलता है, या जब तक सिग्नल वितरित नहीं किया जाता है, जिसका कार्य वर्तमान प्रक्रिया को समाप्त करना या सिग्नल हैंडलिंग फ़ंक्शन को कॉल करना है। यदि कोई बच्चा पहले से ही कॉल के समय से बाहर निकल चुका है (एक तथाकथित "ज़ोंबी" प्रक्रिया), फ़ंक्शन तुरंत लौटता है। बच्चे द्वारा उपयोग किए जाने वाले किसी भी सिस्टम संसाधन को मुक्त कर दिया जाता है। waitpid फ़ंक्शन वर्तमान प्रक्रिया के निष्पादन को निलंबित करता है जब तक कि कोई बच्चा निर्दिष्ट नहीं करता है पीआईडी तर्क समाप्त हो गया है, या जब तक एक सिग्नल वितरित नहीं किया जाता है, जिसका कार्य वर्तमान प्रक्रिया को समाप्त करना या सिग्नल हैंडलिंग फ़ंक्शन को कॉल करना है। अगर एक बच्चे द्वारा अनुरोध किया गया है पीआईडी कॉल के समय से पहले ही बाहर निकल चुका है (एक तथाकथित "ज़ोंबी" प्रक्रिया), फ़ंक्शन तुरंत लौटता है। बच्चे द्वारा उपयोग किए जाने वाले किसी भी सिस्टम संसाधन को मुक्त कर दिया जाता है। का मूल्य पीआईडी इनमें से एक हो सकता है: < -1 जिसका मतलब किसी भी बच्चे की प्रक्रिया के लिए इंतजार करना है जिसका प्रक्रिया समूह आईडी पूर्ण मूल्य के बराबर है पीआईडी . -1 जिसका मतलब किसी भी बच्चे की प्रक्रिया के लिए इंतजार करना है; यह वही व्यवहार है जोरुकिए प्रदर्शन। 0 जिसका मतलब किसी भी बच्चे की प्रक्रिया के लिए इंतजार करना है जिसका प्रक्रिया समूह आईडी कॉलिंग प्रक्रिया के बराबर है। > 0 जिसका मतलब है कि उस बच्चे की प्रतीक्षा करें जिसका प्रक्रिया आईडी मूल्य के बराबर है पीआईडी . का मूल्य विकल्प निम्न या स्थिरांक में से एक या अधिक का एक OR है: WNOHANG जिसका मतलब है कि अगर कोई बच्चा निकलता है तो तत्काल वापस लौटना होगा। WUNTRACED जिसका मतलब है कि उन बच्चों के लिए भी लौटना है जिन्हें रोक दिया गया है, और जिनकी स्थिति की सूचना नहीं मिली है। (लिनक्स-केवल विकल्पों के लिए, नीचे देखें।) अगर स्थिति नहीं हैशून्य, रुकिए याwaitpid स्थान पर स्टोर स्थिति की जानकारी द्वारा इंगित किया गया स्थिति . इस स्थिति का मूल्यांकन निम्नलिखित मैक्रोज़ के साथ किया जा सकता है (ये मैक्रोज़ स्टेट बफर लेते हैं (एपूर्णांक) एक तर्क के रूप में --- बफर को सूचक नहीं!): WIFEXITED ( स्थिति ) अगर बच्चा सामान्य रूप से निकलता है तो शून्य नहीं है। WEXITSTATUS ( स्थिति ) समाप्त होने वाले बच्चे के रिटर्न कोड के कम से कम आठ बिट्स का मूल्यांकन करता है, जिसे कॉल के लिए तर्क के रूप में सेट किया गया हो सकता हैबाहर जाएं() या एक के लिए तर्क के रूप में वापसी मुख्य कार्यक्रम में बयान। इस मैक्रो का मूल्यांकन केवल तभी किया जा सकता है यदिWIFEXITEDगैर-शून्य लौटा WIFSIGNALED ( स्थिति ) अगर सही हो तो सिग्नल की वजह से बच्चे की प्रक्रिया निकलती है तो सच हो जाता है। WTERMSIG ( स्थिति ) सिग्नल की संख्या लौटाती है जिससे बच्चे की प्रक्रिया समाप्त हो जाती है। इस मैक्रो का मूल्यांकन केवल तभी किया जा सकता है यदिWIFSIGNALED गैर-शून्य लौटा WIFSTOPPED ( स्थिति ) अगर सचमुच वापसी की वजह से बच्चे की प्रक्रिया बंद हो जाती है तो सच हो जाता है; यह केवल तभी संभव है जब कॉल का उपयोग किया गया होWUNTRACED. WSTOPSIG ( स्थिति ) सिग्नल की संख्या लौटाती है जिससे बच्चे को रुकना पड़ता है। इस मैक्रो का मूल्यांकन केवल तभी किया जा सकता है यदिWIFSTOPPED गैर-शून्य लौटा यूनिक्स के कुछ संस्करण (उदा। लिनक्स, सोलारिस, लेकिन एईक्स, सनोस नहीं) एक मैक्रो भी परिभाषित करते हैंWCOREDUMP ( स्थिति ) यह जांचने के लिए कि क्या बच्चे की प्रक्रिया कोर हो गई है। केवल #ifdef WCOREDUMP … #endif में संलग्न इस का उपयोग करें। बच्चे की प्रक्रिया आईडी जो निकलती है, या शून्य हैWNOHANG इस्तेमाल किया गया था और कोई बच्चा उपलब्ध नहीं था, या -1 त्रुटि पर (इस मामले में errno एक उचित मूल्य पर सेट है)। ECHILD अगर प्रक्रिया में निर्दिष्ट है पीआईडी कॉलिंग प्रक्रिया का बच्चा मौजूद नहीं है या नहीं है। (यह SIGCHLD के लिए कार्रवाई SIG_IGN पर सेट होने पर किसी के अपने बच्चे के लिए हो सकता है। थ्रेड के बारे में LINUX नोट्स अनुभाग भी देखें।) EINVAL अगर विकल्प तर्क अमान्य था। EINTR अगरWNOHANG सेट नहीं किया गया था और एक अनब्लॉक सिग्नल या एSIGCHLD पकड़ा गया। विवरण
प्रतिलाभ की मात्रा
त्रुटियाँ




