Erlang 21

sys




erlang

sys

मॉड्यूल

sys

मॉड्यूल सारांश

सिस्टम संदेशों के लिए एक कार्यात्मक इंटरफ़ेस।

विवरण

इस मॉड्यूल में प्रोग्राम द्वारा उपयोग किए जाने वाले सिस्टम संदेश भेजने के लिए फ़ंक्शन हैं, और डीबगिंग उद्देश्यों के लिए उपयोग किए गए संदेश।

प्रक्रियाओं के कार्यान्वयन के लिए उपयोग किए जाने वाले कार्यों से सिस्टम संदेशों को समझने की भी उम्मीद की जाती है, जैसे डिबग संदेश और कोड परिवर्तन। किसी प्रक्रिया के लिए सिस्टम संदेशों के उपयोग को लागू करने के लिए इन कार्यों का उपयोग किया जाना चाहिए; या तो सीधे या मानक व्यवहार के माध्यम से, जैसे कि gen_server

डिफ़ॉल्ट समय-आउट 5000 एमएस है, जब तक कि अन्यथा निर्दिष्ट न हो। timeout एक अनुरोध का जवाब देने के लिए प्रक्रिया का इंतजार करने का समय निर्धारित करता है। यदि प्रक्रिया जवाब नहीं देती है, तो फ़ंक्शन exit({timeout, {M, F, A}}) मूल्यांकन करता है।

फ़ंक्शन डिबग संरचना का संदर्भ बनाते हैं। डीबग संरचना dbg_opt() की एक सूची है, जो एक आंतरिक डेटा प्रकार है जिसका उपयोग फ़ंक्शन handle_system_msg/6 द्वारा किया जाता है। खाली सूची होने पर कोई डिबगिंग नहीं की जाती है।

सिस्टम संदेश

मानक व्यवहारों में से एक के रूप में लागू नहीं होने वाली प्रक्रियाओं को अभी भी सिस्टम संदेशों को समझना चाहिए। निम्नलिखित तीन संदेशों को समझना चाहिए:

  • सादा तंत्र संदेश। ये {system, From, Msg} रूप में प्राप्त होते हैं। इस संदेश की सामग्री और अर्थ की व्याख्या प्रक्रिया मॉड्यूल द्वारा नहीं की जाती है। जब एक सिस्टम संदेश प्राप्त होता है, फ़ंक्शन handle_system_msg/6 अनुरोध को संभालने के लिए कहा जाता है।

  • शटडाउन संदेश। यदि प्रक्रिया समाप्त हो जाती है, तो उसे अपने माता-पिता, पर्यवेक्षक से शटडाउन अनुरोध को संभालने में सक्षम होना चाहिए। {'EXIT', Parent, Reason} का संदेश {'EXIT', Parent, Reason} को समाप्त करने का एक आदेश है। जब यह संदेश प्राप्त होता है, तो प्रक्रिया को समाप्त करना होगा, आमतौर पर Parent के समान Reason साथ।

  • यदि रनटाइम के दौरान प्रक्रिया परिवर्तन को गतिशील रूप से लागू करने के लिए उपयोग किए जाने वाले मॉड्यूल, प्रक्रिया को एक और संदेश को समझना चाहिए। एक उदाहरण gen_event प्रक्रिया है। संदेश {_Label, {From, Ref}, get_modules} । इस संदेश का उत्तर है From ! {Ref, Modules} From ! {Ref, Modules} , जहां Modules प्रक्रिया में वर्तमान में सक्रिय मॉड्यूल की एक सूची है।

    इस संदेश का उपयोग रिलीज हैंडलर द्वारा किया जाता है ताकि यह पता लगाया जा सके कि कौन सी प्रक्रिया एक निश्चित मॉड्यूल को निष्पादित करती है। बाद में प्रक्रिया को निलंबित किया जा सकता है और इसके एक मॉड्यूल के लिए कोड परिवर्तन करने का आदेश दिया जा सकता है।

सिस्टम इवेंट

जब इस मॉड्यूल के कार्यों के साथ एक प्रक्रिया को डीबग करना होता है, तो यह प्रक्रिया system_events उत्पन्न करती है , जो तब डिबग फ़ंक्शन में व्यवहार की जाती है। उदाहरण के लिए, सिस्टम ईवेंट को टर्मिनल पर trace करता है।

चार पूर्वनिर्धारित प्रणाली की घटनाओं का उपयोग तब किया जाता है जब कोई प्रक्रिया संदेश प्राप्त करती है या भेजती है। प्रक्रिया अपनी स्वयं की सिस्टम घटनाओं को भी परिभाषित कर सकती है। यह हमेशा इन घटनाओं को प्रारूपित करने की प्रक्रिया पर निर्भर करता है।

जानकारी का प्रकार

name() =
pid() | atom() | {global, term()} | {via, module(), term()}

system_event() =
{in, Msg :: term()} |
{in, Msg :: term(), From :: term()} |
{out, Msg :: term(), To :: term()} |
{out, Msg :: term(), To :: term(), State :: term()} |
term()

dbg_opt()

इस मैनुअल पृष्ठ का परिचय देखें।

dbg_fun() =
fun((FuncState :: term(),
Event :: system_event() ,
ProcState :: term()) ->
done | (NewFuncState :: term()))

format_fun() =
fun((Device :: io:device() | file:io_device() ,
Event :: system_event() ,
Extra :: term()) ->
any())

निर्यात

change_code (नाम, मॉड्यूल, OldVsn, अतिरिक्त) -> ठीक | {त्रुटि, कारण}
change_code (नाम, मॉड्यूल, OldVsn, अतिरिक्त, समय समाप्त) ->
ठीक है | {त्रुटि, कारण}

प्रकार

कोड बदलने की प्रक्रिया बताता है। इस संदेश को संभालने के लिए प्रक्रिया निलंबित होनी चाहिए। तर्क Extra प्रत्येक प्रक्रिया के लिए अपने स्वयं के रूप में उपयोग करने के लिए आरक्षित है। समारोह Module:system_code_change/4 कहा जाता है। OldVsn Module का पुराना संस्करण है।

get_state (नाम) -> राज्य
get_state (नाम, समय समाप्त) -> राज्य

प्रकार

प्रक्रिया की स्थिति हो जाती है।

ध्यान दें

इन कार्यों का उद्देश्य केवल डिबगिंग में मदद करना है। वे सुविधा के लिए प्रदान किए जाते हैं, जिससे डेवलपर्स अपने स्वयं के राज्य निष्कर्षण कार्यों को बनाने से बचने के लिए अनुमति देते हैं और डिबगिंग करते समय get_status/1 या get_status/2 के रिटर्न मूल्यों से राज्य को अंतःक्रियात्मक रूप से निकालने से भी बचते हैं।

State का मूल्य विभिन्न प्रकार की प्रक्रियाओं के लिए भिन्न होता है, इस प्रकार है:

  • एक gen_server प्रक्रिया के लिए, लौटाया गया राज्य कॉलबैक मॉड्यूल की स्थिति है।

  • एक gen_statem प्रक्रिया के लिए, State टपल {CurrentState,CurrentData}

  • एक gen_event प्रक्रिया के लिए, State tuples की एक सूची है, जहां प्रत्येक tuple प्रक्रिया में पंजीकृत ईवेंट हैंडलर से मेल खाती है और इसमें {Module, Id, HandlerState} , निम्नानुसार हैं:

    Module

    ईवेंट हैंडलर का मॉड्यूल नाम।

    Id

    हैंडलर की आईडी (जो आईडी के बिना पंजीकृत थी, तो false )।

    HandlerState

    हैंडलर की अवस्था।

यदि कॉलबैक मॉड्यूल एक फ़ंक्शन system_get_state/1 निर्यात करता है, तो उसे अपना राज्य प्राप्त करने के लिए लक्ष्य प्रक्रिया में कहा जाता है। इसका तर्क get_status/1 द्वारा get_status/1 गए Misc मान के समान है, और फ़ंक्शन Module:system_get_state/1 से कॉलबैक मॉड्यूल की स्थिति को निकालने की उम्मीद है। फ़ंक्शन system_get_state/1 को {ok, State} वापस करना होगा, जहां State कॉलबैक मॉड्यूल की स्थिति है।

यदि कॉलबैक मॉड्यूल एक system_get_state/1 फ़ंक्शन का निर्यात नहीं करता है, तो get_state/1,2 मानता है कि Misc मूल्य कॉलबैक मॉड्यूल की स्थिति है और इसके बजाय इसे सीधे लौटाता है।

यदि कॉलबैक मॉड्यूल का system_get_state/1 फ़ंक्शन क्रैश या अपवाद फेंकता है, तो कॉल करने वाला त्रुटि {callback_failed, {Module, system_get_state}, {Class, Reason}} बाहर निकलता है, जहां Module कॉलबैक मॉड्यूल का नाम और Class और Reason बताता है। अपवाद के।

फ़ंक्शन system_get_state/1 मुख्य रूप से उपयोगकर्ता-परिभाषित व्यवहार और मॉड्यूल के लिए उपयोगी है जो ओटीपी special processes लागू special processes gen_server , gen_statem और gen_event OTP व्यवहार मॉड्यूल इस फ़ंक्शन को निर्यात करते हैं, इसलिए उन व्यवहारों के लिए कॉलबैक मॉड्यूल को स्वयं की आपूर्ति करने की आवश्यकता नहीं होती है।

किसी प्रक्रिया के बारे में अधिक जानकारी के लिए, उसके राज्य सहित, get_status/1 और get_status/2

get_status (नाम) -> स्थिति
get_status (नाम, समय समाप्त) -> स्थिति

प्रकार

प्रक्रिया की स्थिति प्राप्त करता है।

विभिन्न प्रकार की प्रक्रियाओं के लिए Misc का मान भिन्न होता है, उदाहरण के लिए:

  • एक gen_server प्रक्रिया कॉलबैक मॉड्यूल की स्थिति लौटाती है।

  • एक gen_statem प्रक्रिया जानकारी लौटाती है, जैसे कि इसका वर्तमान स्थिति नाम और राज्य डेटा।

  • एक gen_event प्रक्रिया अपने प्रत्येक पंजीकृत हैंडलर के बारे में जानकारी देती है।

gen_server , gen_statem , और gen_event लिए कॉलबैक मॉड्यूल gen_server gen_statem format_status/2 को निर्यात करके Misc का मान भी बदल सकते हैं, जो मॉड्यूल-विशिष्ट जानकारी का योगदान देता है। विवरण के लिए, gen_server:format_status/2 , gen_statem:format_status/2 और gen_event:format_status/2

स्थापित करें (नाम, फनस्पेक) -> ठीक है
स्थापित करें (नाम, फनस्पेक, टाइमआउट) -> ठीक है

प्रकार

वैकल्पिक डीबग फ़ंक्शन की स्थापना सक्षम करता है। इस तरह के एक फ़ंक्शन का एक उदाहरण एक ट्रिगर है, एक फ़ंक्शन जो किसी विशेष घटना की प्रतीक्षा करता है और घटना उत्पन्न होने पर कुछ कार्रवाई करता है। उदाहरण के लिए, निम्न-स्तरीय अनुरेखण को चालू करना।

जब भी सिस्टम ईवेंट उत्पन्न होता है, तो Func कहा जाता है। इस फ़ंक्शन को वापस done , या एक नया Func राज्य है। पहले मामले में, फ़ंक्शन हटा दिया जाता है। यदि फ़ंक्शन विफल हो जाता है तो उसे निकाल भी दिया जाता है। यदि एक डिबग फ़ंक्शन को अधिक बार स्थापित किया जाना चाहिए, तो प्रत्येक इंस्टॉलेशन के लिए एक अद्वितीय FuncId निर्दिष्ट किया जाना चाहिए।

लॉग (नाम, ध्वज) -> ठीक | {ठीक है, [ system_event() ]}
लॉग (नाम, ध्वज, समय समाप्त) -> ठीक | {ठीक है, [ system_event() ]}

प्रकार

सिस्टम ईवेंट की लॉगिंग को चालू या बंद करता है। यदि पर, अधिकतम N इवेंट डीबग संरचना में रखे गए हैं (डिफ़ॉल्ट 10 है)।

यदि Flag get , तो सभी लॉग की गई घटनाओं की सूची वापस आ जाती है।

यदि Flag print , तो लॉग किए गए ईवेंट्स मानक_io पर मुद्रित किए जाते हैं।

घटनाओं को एक फ़ंक्शन के साथ स्वरूपित किया जाता है जो उस प्रक्रिया से परिभाषित होता है जो घटना उत्पन्न करता है ( handle_debug/4 ) लिए कॉल के साथ handle_debug/4 )

log_to_file (नाम, ध्वज) -> ठीक | {त्रुटि, open_file}
log_to_file (नाम, ध्वज, समय समाप्त) -> ठीक है | {त्रुटि, open_file}

प्रकार

फ़ाइल में पाठ प्रारूप में सभी सिस्टम ईवेंट की लॉगिंग को सक्षम या अक्षम करता है। घटनाओं को एक फ़ंक्शन के साथ स्वरूपित किया जाता है जो उस प्रक्रिया से परिभाषित होता है जो घटना उत्पन्न करता है ( handle_debug/4 लिए कॉल के साथ)। फ़ाइल को UTF-8 एन्कोडिंग के साथ खोला गया है।

no_debug (नाम) -> ठीक है
no_debug (नाम, टाइमआउट) -> ठीक है

प्रकार

प्रक्रिया के लिए सभी डीबगिंग को बंद कर देता है। इसमें फ़ंक्शन install/2,3 साथ स्पष्ट रूप से इंस्टॉल किए गए फ़ंक्शन शामिल हैं, उदाहरण के लिए, ट्रिगर।

निकालें (नाम, FuncOrFuncId :: Func | FuncId) -> ठीक है
निष्कासन (नाम, FuncOrFuncId :: Func | FuncId, Timeout) -> ठीक है

प्रकार

प्रक्रिया से एक स्थापित डीबग फ़ंक्शन को निकालता है। Func या FuncId पहले से स्थापित के समान होना चाहिए।

रिप्लेस_स्टेट (नाम, स्टेटफ़न) -> न्यूस्टेट
रिप्लेस_स्टेट (नाम, स्टेटफ़न, टाइमआउट) -> नयास्टैट

प्रकार

प्रक्रिया की स्थिति को प्रतिस्थापित करता है, और नई स्थिति देता है।

ध्यान दें

इन कार्यों का उद्देश्य केवल डिबगिंग में मदद करना है, और सामान्य कोड से नहीं बुलाया जाना है। वे सुविधा के लिए प्रदान किए जाते हैं, जिससे डेवलपर्स को अपने स्वयं के कस्टम राज्य प्रतिस्थापन कार्य बनाने से बचने की अनुमति मिलती है।

प्रक्रिया के लिए एक नया राज्य प्रदान करता है। तर्क State और StateFun की StateFun वापसी मान विभिन्न प्रकार की प्रक्रियाओं के लिए अलग-अलग हैं:

  • एक gen_server प्रक्रिया के लिए, State कॉलबैक मॉड्यूल की स्थिति है और gen_server उस राज्य का एक नया उदाहरण है।

  • एक gen_statem प्रक्रिया के लिए, State tuple {CurrentState,CurrentData} , और {CurrentState,CurrentData} एक समान tuple है, जिसमें एक नया वर्तमान स्थिति, नया राज्य डेटा या दोनों हो सकते हैं।

  • एक gen_event प्रक्रिया के लिए, State टपल {Module, Id, HandlerState} इस प्रकार है:

    Module

    ईवेंट हैंडलर का मॉड्यूल नाम।

    Id

    हैंडलर की आईडी (जो आईडी के बिना पंजीकृत थी, तो false )।

    HandlerState

    हैंडलर की अवस्था।

    NewState एक समान ट्यूपल है जहां Module और Id का HandlerState की तरह ही मान है, लेकिन HandlerState का मूल्य अलग हो सकता है। एक NewState , जिसका Module या Id मान State से भिन्न होता है, लौटते हुए, घटना हैंडलर की स्थिति को अपरिवर्तित छोड़ देता है। एक gen_event प्रक्रिया के लिए, StateFun को gen_event प्रक्रिया में पंजीकृत प्रत्येक ईवेंट हैंडलर के लिए एक बार बुलाया जाता है।

यदि कोई StateFun फ़ंक्शन प्रक्रिया स्थिति में किसी भी परिवर्तन को प्रभावित नहीं करने का निर्णय लेता है, तो प्रक्रिया प्रकार की परवाह किए बिना, यह अपने State तर्क को वापस कर सकता है।

यदि कोई StateFun फ़ंक्शन क्रैश या अपवाद फेंकता है, तो प्रक्रिया की मूल स्थिति gen_server , और gen_statem प्रक्रियाओं के लिए अपरिवर्तित होती है। gen_event प्रक्रियाओं के लिए, एक दुर्घटनाग्रस्त या विफल होने वाली StateFun फ़ंक्शन का अर्थ है कि केवल उस विशेष ईवेंट हैंडलर की स्थिति जिस पर वह काम कर रहा था जब वह विफल या दुर्घटनाग्रस्त हो गया हो; यह अभी भी एक ही gen_event प्रक्रिया में पंजीकृत अन्य इवेंट हैंडलर के राज्यों को बदलने में सफल हो सकता है।

यदि कॉलबैक मॉड्यूल एक system_replace_state/2 फ़ंक्शन का निर्यात करता है, तो इसे StateFun का उपयोग करके अपने राज्य को बदलने के लिए लक्ष्य प्रक्रिया में कहा जाता है। इसके दो तर्क StateFun और Misc , जहाँ Misc एक ही है जैसे Misc मान get_status/1 द्वारा लौटाया गया है। एक system_replace_state/2 फ़ंक्शन के लिए {ok, NewState, NewMisc} वापस लौटने की उम्मीद है, जहां {ok, NewState, NewMisc} कॉलबैक मॉड्यूल की नई स्थिति है, जिसे StateFun कॉल करके प्राप्त किया गया है, और NewMisc एक मूल रूप से नया नया प्रयोग है जिसे मूल Misc ( Misc ) के रूप में बदलने के लिए उपयोग किया जाता है अक्सर इसमें कॉलबैक मॉड्यूल की स्थिति शामिल होती है)।

यदि कॉलबैक मॉड्यूल एक system_replace_state/2 फ़ंक्शन का निर्यात नहीं करता है, तो system_replace_state/2 replace_state/2,3 मान लेता है कि Misc कॉलबैक मॉड्यूल की स्थिति है, इसे StateFun को StateFun और नए राज्य के रूप में और मान के नए मान के रूप में वापसी मान का उपयोग करता है ।

यदि कॉलबैक मॉड्यूल का फ़ंक्शन system_replace_state/2 क्रैश या अपवाद फेंकता है, तो कॉल करने वाला त्रुटि {callback_failed, {Module, system_replace_state}, {Class, Reason}} बाहर निकलता है, जहां Module कॉलबैक मॉड्यूल का नाम और Class और Reason विवरण बताता है अपवाद के। यदि कॉलबैक मॉड्यूल एक system_replace_state/2 फ़ंक्शन प्रदान नहीं करता है और StateFun क्रैश या अपवाद फेंकता है, तो कॉल करने वाला त्रुटि {callback_failed, StateFun, {Class, Reason}} बाहर निकलता है।

फंक्शन system_replace_state/2 मुख्य रूप से उपयोगकर्ता-परिभाषित व्यवहार और मॉड्यूल के लिए उपयोगी है जो ओटीपी special processes लागू special processes । OTP व्यवहार मॉड्यूल gen_server , gen_statem , और gen_event इस फ़ंक्शन को निर्यात करते हैं, इसलिए उन व्यवहारों के लिए कॉलबैक मॉड्यूल को अपनी आपूर्ति करने की आवश्यकता नहीं है।

फिर से शुरू (नाम) -> ठीक है
फिर से शुरू (नाम, टाइमआउट) -> ठीक है

प्रकार

एक निलंबित प्रक्रिया शुरू करता है।

सांख्यिकी (नाम, ध्वज) -> ठीक | {ठीक है, सांख्यिकी}
आँकड़े (नाम, ध्वज, समय समाप्त) -> ठीक | {ठीक है, सांख्यिकी}

प्रकार

आँकड़ों के संग्रह को सक्षम या अक्षम करता है। यदि Flag get , तो सांख्यिकीय संग्रह लौटा दिया जाता है।

सस्पेंड (नाम) -> ठीक है
सस्पेंड (नाम, टाइमआउट) -> ठीक है

प्रकार

प्रक्रिया को निलंबित करता है। जब प्रक्रिया को निलंबित कर दिया जाता है, तो यह केवल अन्य सिस्टम संदेशों का जवाब देता है, लेकिन अन्य संदेशों का नहीं।

समाप्ति (नाम, कारण) -> ठीक है
समाप्त (नाम, कारण, समय समाप्त) -> ठीक है

प्रकार

निर्दिष्ट Reason साथ समाप्त करने के लिए प्रक्रिया का आदेश देता है। समाप्ति को एसिंक्रोनस रूप से किया जाता है, इसलिए यह गारंटी नहीं दी जाती है कि फ़ंक्शन वापस आने पर प्रक्रिया समाप्त हो गई है।

ट्रेस (नाम, ध्वज) -> ठीक है
ट्रेस (नाम, ध्वज, टाइमआउट) -> ठीक है

प्रकार

सभी सिस्टम घटनाओं को standard_io पर प्रिंट करता है। घटनाओं को एक फ़ंक्शन के साथ स्वरूपित किया जाता है जो उस प्रक्रिया से परिभाषित होता है जो घटना उत्पन्न करता है ( handle_debug/4 लिए कॉल के साथ)।

प्रक्रिया कार्यान्वयन कार्य

एक विशेष प्रक्रिया को लागू करते समय निम्नलिखित कार्यों का उपयोग किया जाता है। यह एक सामान्य प्रक्रिया है, जो एक मानक व्यवहार का उपयोग नहीं करती है, लेकिन एक प्रक्रिया जो मानक प्रणाली संदेशों को समझती है।

निर्यात

debug_options (विकल्प) -> [ dbg_opt() ]

प्रकार

एक प्रक्रिया द्वारा उपयोग किया जा सकता है जो विकल्पों की सूची से डिबग संरचना शुरू करता है। तर्क Opt मान समान कार्यों के लिए समान हैं।

get_debug (आइटम, डीबग, डिफ़ॉल्ट) -> शब्द ()

प्रकार

एक डिबग विकल्प के साथ जुड़े डेटा हो जाता है। यदि Item नहीं मिला है तो Default लौटा दिया गया है। समाप्त होने से पहले मुद्रण के लिए डीबग डेटा पुनर्प्राप्त करने के लिए प्रक्रिया द्वारा उपयोग किया जा सकता है।

handle_debug (डिबग, फॉर्मफ़ंक, एक्स्ट्रा, इवेंट) -> [ dbg_opt() ]

प्रकार

यह फ़ंक्शन एक प्रक्रिया द्वारा बुलाया जाता है जब यह एक सिस्टम ईवेंट उत्पन्न करता है। FormFunc एक फॉर्मेटिंग फंक्शन है, जिसे इवेंट्स प्रिंट करने के लिए FormFunc(Device, Event, Extra) कहा जाता है, जो कि यदि ट्रेसिंग सक्रिय है तो आवश्यक है। Extra किसी भी अतिरिक्त जानकारी है जिसे प्रारूप फ़ंक्शन में प्रक्रिया की आवश्यकता है, उदाहरण के लिए, प्रक्रिया का नाम।

handle_system_msg (Msg, From, जनक, मॉड्यूल, डीबग, विविध) ->
वापसी नहीं()

प्रकार

इस फ़ंक्शन का उपयोग सिस्टम संदेशों की देखभाल के लिए एक प्रक्रिया मॉड्यूल द्वारा किया जाता है। प्रक्रिया एक {system, From, Msg} संदेश प्राप्त करती है और इस फ़ंक्शन को Msg और From पास करती है।

यह फ़ंक्शन कभी नहीं लौटता है। यह निम्नलिखित कार्यों में से किसी एक को कॉल करता है:

  • Module:system_continue(Parent, NDebug, Misc) , जहां प्रक्रिया निष्पादन को जारी रखती है।

  • Module:system_terminate(Reason, Parent, Debug, Misc) , यदि प्रक्रिया को समाप्त करना है।

Module निम्नलिखित निर्यात करना चाहिए:

  • system_continue/3
  • system_terminate/4
  • system_code_change/4
  • system_get_state/1
  • system_replace_state/2

तर्क Misc का उपयोग किसी प्रक्रिया में आंतरिक डेटा को बचाने के लिए किया जा सकता है, उदाहरण के लिए, इसकी स्थिति। इसे Module:system_continue/3 या Module:system_terminate/4 भेजा जाता है।

प्रिंट_लॉग (डीबग) -> ठीक है

प्रकार

डीबग संरचना में लॉग सिस्टम ईवेंट को प्रिंट करता है, FormFunc का उपयोग करते हुए परिभाषित करता है जब ईवेंट को कॉल करने के लिए handle_debug/4 द्वारा उत्पन्न किया गया था।

मॉड्यूल: system_code_change (विविध, मॉड्यूल, OldVsn, अतिरिक्त) -> {ठीक है, NMisc}

प्रकार

जब कोड परिवर्तन करने के लिए प्रक्रिया होती है, तो handle_system_msg/6 से कॉल किया जाता है। आंतरिक डेटा संरचना में परिवर्तन होने पर कोड परिवर्तन का उपयोग किया जाता है। यह फ़ंक्शन तर्क को नए डेटा संरचना में Misc रूपांतरित करता है। OldVsn Module के पुराने संस्करण का विशेषता vsn है। यदि ऐसी कोई विशेषता परिभाषित नहीं की जाती है, तो परमाणु को undefined भेजा जाता है।

मॉड्यूल: system_continue (जनक, डीबग, विविध) -> कोई नहीं ()

प्रकार

handle_system_msg/6 से कॉल किया जाता है जब प्रक्रिया अपने निष्पादन को जारी रखना है (उदाहरण के लिए, इसे निलंबित कर दिया गया है)। यह फ़ंक्शन कभी नहीं लौटता है।

मॉड्यूल: system_get_state (विविध) -> {ठीक है, राज्य}

प्रकार

जब इस प्रक्रिया को उसकी वर्तमान स्थिति को दर्शाती है एक शब्द वापस करने के लिए handle_system_msg/6 से कॉल किया जाता है। State get_state/2 द्वारा लौटाया गया मान है।

मॉड्यूल: system_replace_state (StateFun, Misc) -> {ठीक है, NState, NMisc}

प्रकार

जब इस प्रक्रिया को उसकी वर्तमान स्थिति को बदलना है, तो handle_system_msg/6 से कॉल किया जाता है। NState , NState replace_state/3 द्वारा दिया गया मान है।

मॉड्यूल: system_terminate (कारण, माता-पिता, डीबग, विविध) -> कोई नहीं ()

प्रकार

जब प्रक्रिया को समाप्त करने के लिए handle_system_msg/6 से कॉल किया जाता है। उदाहरण के लिए, इस फ़ंक्शन को कहा जाता है जब प्रक्रिया निलंबित हो जाती है और इसके मूल आदेश बंद हो जाते हैं। यह प्रक्रिया को एक सफाई करने का मौका देता है। यह फ़ंक्शन कभी नहीं लौटता है।