2015-03-11 7 views
13

Process.exit(self, :normal) नौकरी करता है, लेकिन यह ** (EXIT from #PID<0.49.0>) normal प्रिंट करता है। संदेश के बाहर निकलने का कोई तरीका है?मैं इलीक्सिर से चुपचाप कैसे निकल सकता हूं?

+0

मैंने आपके प्रश्न का उत्तर दिया जितना मैं कर सकता था, लेकिन यह वास्तव में अस्पष्ट है। क्या आप समझा सकते हैं कि आपकी प्रक्रिया किस प्रकार चल रही है और साथ ही आप मुद्रित संदेश कहां देख रहे हैं? – Stratus3D

उत्तर

20

यह इस बात पर निर्भर करता है कि आप किस एप्लिकेशन पर चल रहे हैं। यदि आप एक स्क्रिप्ट बना रहे हैं, तो आप System.halt(0) का आह्वान कर सकते हैं। यदि आपके पास कोई एप्लिकेशन है, तो System.halt(0) पर कॉल न करें, क्योंकि यह अन्य सभी अनुप्रयोगों पर विचार किए बिना पूरे सिस्टम को बंद कर देगा। इसके बजाय System.stop(0) का उपयोग करें।

वैकल्पिक रूप से, आप वर्तमान प्रक्रिया से बाहर निकलने के लिए exit(:shutdown) पर कॉल कर सकते हैं। :shutdown ओटीपी में बाहर निकलने का एक आम कारण है और यदि आप .exs फ़ाइलों के अंदर हैं, तो यह भी ठीक काम करेगा।

3

हां। लेकिन समाधान आपकी प्रक्रिया के कोड पर निर्भर करता है (और जहां आप मुद्रित संदेश देख रहे हैं)।

प्रक्रिया OTP का व्यवहार का उपयोग नहीं कर रहा है, तो और केवल एक पुनरावर्ती समारोह आप बस समारोह से लौट सकता है। आपके रिकर्सिव फ़ंक्शन को केवल एक ऐसा केस होना चाहिए जहां फ़ंक्शन स्वयं को फिर से न बुलाए। कुछ इस तरह:

def recursive_function(:exit) do 
    :ok 
def recursive_function(other_clause) do 
    ... 

अपने gen_server तरह OTP का व्यवहार उपयोग कर रहे हैं, तुम सब करने की जरूरत है कि इसके तहत चल रहा है आवेदन को रोकने के लिए है। यह आईईएक्स कंसोल (0 जो मुझे लगता है कि वह संदेश कहां देखता है) पर प्रिंट संदेश होगा, लेकिन यह STDOUT को कुछ भी प्रिंट नहीं करेगा, जो मुझे लगता है कि आप किस बारे में चिंतित हैं।

+0

यह एक ओटीपी ऐप है। कोड यहां है: https://github.com/ijt/speedometer 4cc3112e प्रतिबद्ध करें। मैं इसे देख रहा हूं जब मैं 'मिश्रण escript.build चलाता हूं; ./speedometer -h'। – ijt

+0

बस उस प्रतिबद्धता पर टिप्पणी की। मैंने एक केस स्टेटमेंट कहा, लेकिन आप शायद एक कथन का भी उपयोग कर सकते हैं। चूंकि केवल दो संभावित कार्य हैं (कुछ भी एकेए निकास न करें, या मुख्य निष्पादन जारी रखें)। उम्मीद है की वो मदद करदे! – Stratus3D

+0

सही, अच्छा विचार। – ijt

संबंधित मुद्दे