मुझे लगता है कि ओटीपी पर्यवेक्षक व्यवहार के इस प्रकार के अनुकूलन आसानी से नहीं किए जा सकते हैं। जिस तरह ओटीपी पर्यवेक्षकों को डिजाइन किया गया है, वे मुझे कुछ सख्त डिजाइन प्रथाओं का पालन करने के लिए मजबूर करते हैं। इस मामले में सबसे महत्वपूर्ण बात यह है कि पर्यवेक्षक को अपने बच्चों की निगरानी करने और असामान्य समाप्ति के मामले में उन्हें पुनरारंभ करने के अलावा कुछ भी नहीं करना चाहिए। पर्यवेक्षकों में पर्यवेक्षकों में कोई भी बग पेश नहीं करने के लिए पर्यवेक्षक में कोई अतिरिक्त तर्क नहीं होना चाहिए जो पर्यवेक्षण वृक्ष और गलती सहनशीलता का महत्वपूर्ण हिस्सा हैं।
जब बच्चा मर जाता है मैं एक ही राज्य में यह दुर्घटना से पहले था के साथ उसे पुन: प्रारंभ करना चाहते हैं - यह सामान्य रूप में बुरा व्यवहार है, क्योंकि बच्चे क्योंकि भ्रष्ट राज्य यह समाप्ति और यह पुन: प्रारंभ करने से पहले था की मृत्यु हो गई गए हैं हो सकता है इस तरह के मामले में एक ही राज्य के साथ निश्चित रूप से समस्याएं पैदा होंगी
क्या इस तरह के मामले में कोई मानक दृष्टिकोण है? पर्यवेक्षक के भीतर बच्चों की स्थिति को अनुकूलित करना, उन्हें पुनरारंभ करने से पहले पर्यवेक्षक अच्छे डिजाइन प्रथाओं के खिलाफ कार्य करता है। इसलिए इस प्रकार के कार्यों को आम तौर पर अलग किया जाता है, उदाहरण के लिए एक और प्रक्रिया शुरू करके, उदाहरण के लिए gen_server जो पर्यवेक्षक (पर्यवेक्षक: start_child) के माध्यम से बच्चों को शुरू करने और सभी प्रक्रियाओं पर मॉनीटर बनाए रखने के लिए जिम्मेदार होगा। यह अतिरिक्त प्रक्रिया नए बच्चे को शुरू करने से पहले किसी भी आवश्यक अनुकूलन कर सकती है।
ओटीपी का उपयोग कर समाप्ति प्रक्रिया का पिड कैसे प्राप्त करें? - अतिरिक्त प्रक्रिया में जो पर्यवेक्षक के माध्यम से बच्चों को शुरू करता है: start_child आप उनकी निगरानी कर सकते हैं और फिर नीचे संदेशों को सुन सकते हैं।
handle_info({'DOWN', Ref, process, _Pid, _}, S) ->
handle_down_worker(Ref, _Pid, S).
या हो सकता है यह संभव है बस समाप्ति से पहले बच्चे का राज्य प्राप्त करने के लिए, और फिर एक ही राज्य से यह पहले था के लिए बच्चे को बहाल: मामले में उदाहरण gen_server की आप नीचे के रूप में handle_info समारोह का प्रयोग करेंगे के लिए दुर्घटनाग्रस्त हो गया? - अगर मैं गलत हूं तो मुझे सही करें लेकिन मुझे लगता है कि 'डाउन' संदेश के साथ, एरलांग को भेजने की प्रक्रिया में राज्य की प्रक्रिया की स्थिति, बच्चे की प्रक्रिया के साथ, संभवतः समाप्ति से पहले संभव नहीं है। यदि यह संभव होगा तो मैं केवल {डाउन, पिड, कारण, राज्य} के समान संदेश संभाल सकता हूं और उसी स्थिति या उसके हिस्से के साथ प्रक्रिया को पुनरारंभ कर सकता हूं। लेकिन फिर, मैं सोच रहा हूं .. आप अचानक मरने वाले बच्चे की स्थिति को कैसे संरक्षित कर सकते हैं, उदाहरण के लिए निकास (पिड, मार) के साथ मारा गया था? मुझे संदेह है कि यह संभव होगा।
संभावित डुप्लिकेट [एरलांग प्रक्रिया को पुनरारंभ करना और संरक्षित राज्य] (http://stackoverflow.com/questions/13199528/restarting-erlang-process-and-preserving-state) –