लिनक्स कमांड जानें - प्रतीक्षा करें

नाम

प्रतीक्षा करें, प्रतीक्षा करें - प्रक्रिया समाप्त होने की प्रतीक्षा करें

सार

# शामिल
# शामिल

pid_t प्रतीक्षा करें (int * स्थिति );
pid_t waitpid (pid_t pid , int * स्थिति , int विकल्प );

विवरण

प्रतीक्षा फ़ंक्शन वर्तमान प्रक्रिया के निष्पादन को तब तक निलंबित कर देता है जब तक कोई बच्चा बाहर नहीं निकलता है, या जब तक सिग्नल वितरित नहीं किया जाता है, जिसका कार्य वर्तमान प्रक्रिया को समाप्त करना या सिग्नल हैंडलिंग फ़ंक्शन को कॉल करना है। यदि कोई बच्चा पहले से ही कॉल के समय से बाहर निकल चुका है (एक तथाकथित "ज़ोंबी" प्रक्रिया), फ़ंक्शन तुरंत लौटता है। बच्चे द्वारा उपयोग किए जाने वाले किसी भी सिस्टम संसाधन को मुक्त कर दिया जाता है।

प्रतीक्षापिड फ़ंक्शन वर्तमान प्रक्रिया के निष्पादन को तब तक निलंबित कर देता है जब तक कि पिड तर्क द्वारा निर्दिष्ट बच्चे को बाहर नहीं किया जाता है, या जब तक सिग्नल वितरित नहीं किया जाता है, जिसका कार्य वर्तमान प्रक्रिया को समाप्त करना या सिग्नल हैंडलिंग फ़ंक्शन को कॉल करना है। यदि बच्चे द्वारा अनुरोध किए गए बच्चे को कॉल के समय से पहले ही बाहर निकला है (तथाकथित "ज़ोंबी" प्रक्रिया), फ़ंक्शन तुरंत लौटाता है। बच्चे द्वारा उपयोग किए जाने वाले किसी भी सिस्टम संसाधन को मुक्त कर दिया जाता है।

पिड का मूल्य इनमें से एक हो सकता है:

<-1

जिसका मतलब किसी भी बच्चे की प्रक्रिया के लिए इंतजार करना है जिसका प्रक्रिया समूह आईडी पिड के पूर्ण मूल्य के बराबर है।

-1

जिसका मतलब किसी भी बच्चे की प्रक्रिया के लिए इंतजार करना है; यह वही व्यवहार है जो प्रदर्शन का इंतजार करता है।

0

जिसका मतलब किसी भी बच्चे की प्रक्रिया के लिए इंतजार करना है जिसका प्रक्रिया समूह आईडी कॉलिंग प्रक्रिया के बराबर है।

> 0

जिसका मतलब है कि उस बच्चे की प्रतीक्षा करें जिसका प्रक्रिया आईडी पिड के मूल्य के बराबर है।

विकल्पों का मूल्य निम्नलिखित या स्थिरांक में से एक या अधिक है:

WNOHANG

जिसका मतलब है कि अगर कोई बच्चा निकलता है तो तत्काल वापस लौटना होगा।

WUNTRACED

जिसका मतलब है कि उन बच्चों के लिए भी लौटना है जिन्हें रोक दिया गया है, और जिनकी स्थिति की सूचना नहीं मिली है।

(लिनक्स-केवल विकल्पों के लिए, नीचे देखें।)

यदि स्थिति पूर्ण नहीं है , तो स्थिति द्वारा इंगित स्थान में प्रतीक्षा करें या प्रतीक्षा करें स्थिति स्थिति जानकारी।

इस स्थिति का मूल्यांकन निम्नलिखित मैक्रोज़ के साथ किया जा सकता है (ये मैक्रोज़ स्टेट बफर (एक int ) को तर्क के रूप में लेते हैं --- बफर को पॉइंटर नहीं!):

सत्यापित ( स्थिति )

अगर बच्चा सामान्य रूप से निकलता है तो शून्य नहीं है।

WEXITSTATUS ( स्थिति )

समाप्त होने वाले बच्चे के रिटर्न कोड के कम से कम आठ बिट्स का मूल्यांकन करता है, जो कि बाहर निकलने के लिए कॉल के तर्क के रूप में सेट किया गया हो सकता है () या मुख्य कार्यक्रम में रिटर्न स्टेटमेंट के लिए तर्क के रूप में। इस मैक्रो का मूल्यांकन केवल तभी किया जा सकता है जब WIFEXITED गैर-शून्य लौटा।

WIFSIGNALED ( स्थिति )

अगर सही हो तो सिग्नल की वजह से बच्चे की प्रक्रिया निकलती है तो सच हो जाता है।

WTERMSIG ( स्थिति )

सिग्नल की संख्या लौटाती है जिससे बच्चे की प्रक्रिया समाप्त हो जाती है। इस मैक्रो का मूल्यांकन केवल तभी किया जा सकता है जब WIFSIGNALED गैर-शून्य लौटा।

WIFSTOPPED ( स्थिति )

अगर सचमुच वापसी की वजह से बच्चे की प्रक्रिया बंद हो जाती है तो सच हो जाता है; यह केवल तभी संभव है जब कॉल WUNTRACED का उपयोग करके किया गया हो।

WSTOPSIG ( स्थिति )

सिग्नल की संख्या लौटाती है जिससे बच्चे को रुकना पड़ता है। WIFSTOPPED गैर-शून्य लौटाए जाने पर इस मैक्रो का मूल्यांकन किया जा सकता है।

यूनिक्स के कुछ संस्करण (जैसे लिनक्स, सोलारिस, लेकिन एईक्स, सनोस ) भी एक मैक्रो WCOREDUMP ( स्थिति ) को परिभाषित करने के लिए परिभाषित करते हैं कि बच्चे की प्रक्रिया कोर को छोड़ दिया गया है या नहीं। केवल #ifdef WCOREDUMP ... #endif में संलग्न इस का उपयोग करें।

प्रतिलाभ की मात्रा

बच्चे की प्रक्रिया आईडी जो निकलती है , या शून्य अगर WNOHANG का उपयोग किया गया था और कोई बच्चा उपलब्ध नहीं था, या -1 त्रुटि पर (जिस स्थिति में इरनो उचित मान पर सेट है)।

त्रुटियाँ

ECHILD

अगर प्रक्रिया में निर्दिष्ट है पिड मौजूद नहीं है या कॉलिंग प्रक्रिया का बच्चा नहीं है। (यह SIGCHLD के लिए कार्रवाई SIG_IGN पर सेट होने पर किसी के अपने बच्चे के लिए हो सकता है। थ्रेड के बारे में LINUX नोट्स अनुभाग भी देखें।)

EINVAL

अगर विकल्प तर्क अमान्य था।

EINTR

अगर WNOHANG सेट नहीं किया गया था और एक अनब्लॉक सिग्नल या एक सिग्चाल्ड पकड़ा गया था।