मुझे समझ गया है कि: 1) प्रतीक्षापिड का उपयोग बच्चे की मौत की प्रतीक्षा करने के लिए किया जाता है और फिर सिगचल और बच्चे के बाहर निकलने की स्थिति आदि एकत्रित किया जाता है। 2) जब हमारे पास सिगचल के लिए सिग्नल हैंडलर होता है, तो हम कुछ और चीजें करते हैं बच्चे या अन्य सामान (प्रोग्रामर तक) के सफाई से संबंधित है और फिर एक प्रतीक्षापैड करें ताकि बच्चा ज़ोंबी नहीं जायेगा और फिर वापस आ जाएगा।प्रतीक्षापिड या सिग्नेक्शन का उपयोग कर?
अब, क्या हमारे पास हमारे कार्यक्रमों में 1 और 2 दोनों होने की आवश्यकता है जब हम एक कांटा/निष्पादन करते हैं और बच्चे वापस आते हैं? हम दोनों है, तो SIGCHLD पहले प्राप्त किया जाता है, तो संकेत हैंडलर पहले कहा जाता है और इस तरह अपनी waitpid सफलतापूर्वक कहा जाता है और माता-पिता की प्रक्रिया कोड में नहीं waitpid इस प्रकार है:
my_signal_handler_for_sigchld
{
do something
tmp = waitpid(-1,NULL,0);
print tmp (which is the correct value of the child pid)
}
int main()
{
sigaction(SIGCHLD, my_signal_handler_for_sigchld)
fork()
if (child) //do something, return
if parent // waitpid(child_pid, NULL,0); print value returned from this waitpid - it is -1
}
की सराहना करता है, तो किसी ने मुझे मदद करता है इसे समझो
हाय, आपके उत्तर के लिए धन्यवाद।लेकिन मैं वास्तव में क्या देख रहा था: जब मेरे पास दोनों प्रक्रियाओं में sig_handler और waitpid है, तो sig_handler को सिग्चल्ड के becaues कहा जाता है और फिर दूसरा प्रश्नपत्र मेरे प्रश्न रिटर्न -1 में ऊपर दिखाया गया है। तो क्या मैं सिर्फ 2 वेटपिप को हटा सकता हूं जो मेरे पास है? – Vin
हां, आप केवल एक बार दिए गए बच्चे की प्रक्रिया के लिए सफलतापूर्वक प्रतीक्षा कर सकते हैं। वास्तव में यह प्रतीक्षा करने के लिए एक बग है क्योंकि पिड पहले इंतजार से "मुक्त" होता है और शायद एक नई बाल प्रक्रिया के लिए पुन: उपयोग किया जा सकता है (यदि आप एक और बनाते हैं)। –
@ आर .. क्या हम स्पष्ट कर सकते हैं कि जब बच्चे की प्रक्रिया समाप्त हो जाती है, तो पाइप का अंत बंद हो जाएगा? वास्तव में सटीक होने के लिए, यह नहीं होगा 'जब बच्चा प्रक्रिया अपने एफडी को बंद कर देती है जो पाइप के अंत से जुड़ा हुआ है, और उस पाइप के अंत से जुड़े एफडी को कोई अन्य प्रक्रिया नहीं है, तो पाइप का दूसरा छोर होगा बंद के रूप में संकेत (ईओएफ प्राप्त) '? मेरा मानना है कि जो कुछ भी होता है, उसे और अधिक स्पष्ट रूप से समझाएगा, और यदि 2 से अधिक प्रक्रियाएं पाइप को एक पाइप खोलने के लिए होती हैं तो इसका महत्वपूर्ण विशेष मामला भी होता है। – nh2