2012-03-29 15 views

उत्तर

13

कुछ भी नहीं। पाइथन स्वयं इसके लिए सिग्नल हैंडलर पंजीकृत नहीं करता है। आप इंटरैक्टिव दुभाषिया में यह जांच कर सकते हैं:

>>> import signal 
>>> signal.signal(signal.SIGTERM, signal.SIG_DFL) 
0 
>>> signal.SIG_DFL 
0 

कि signal.SIGTERM के लिए signal.SIG_DFL लौटने signal.signal() को दर्शाता है। signal.SIGINT के साथ कंट्रास्ट, जिसका कोई डिफ़ॉल्ट संकेत हैंडलर है (जो KeyboardInterrupt को जन्म देती है): थॉमस Wouters के जवाब पर

>>> signal.signal(signal.SIGINT, signal.SIG_DFL) 
<built-in function default_int_handler> 
+4

इसका यह भी अर्थ है कि 'sIGTERM' द्वारा प्रक्रिया समाप्त होने पर' atexit.register() 'के माध्यम से पंजीकृत कार्यों को नहीं कहा जाएगा। –

+5

ठीक है, लेकिन यह क्या करता है? अशुद्ध से बाहर निकलें? इसे पूरी तरह से अनदेखा करें? कुछ और? – Lucretiel

5

भवन, अजगर SIGTERM संकेत के लिए कोई हैंडलर रजिस्टर नहीं है। हम इसे देखकर देख सकते हैं:

In[23]: signal.SIG_DFL == signal.signal(signal.SIGTERM,signal.SIG_DFL) 
Out[23]: True 

इसका मतलब है कि सिस्टम डिफ़ॉल्ट कार्रवाई करेगा। लिनक्स पर, एक SIGTERM के लिए डिफ़ॉल्ट कार्रवाई (the signal man page के अनुसार) प्रक्रिया को समाप्त करना है।

एक प्रक्रिया समाप्त मतलब यह है कि:

  • प्रक्रिया बस किसी भी अधिक समय स्लाइस जिसके दौरान यह कोड निष्पादित कर सकते हैं आवंटित नहीं किया जाएगा।

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

+0

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

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