SIGSTOPऔर SIGKILLदो संकेत हैं जिन्हें किसी प्रक्रिया द्वारा पकड़ा और संभाला नहीं जा सकता है। SIGTSTPकी तरह है SIGSTOPसिवाय इसके कि यह कर सकते हैं पकड़ लिया और नियंत्रित किया।
SIGSTOPऔर SIGTSTPसंकेतों ने रास्ते में ही एक प्रक्रिया को रोकने, के लिए तैयार हो SIGCONT। जब आप उस प्रक्रिया को भेजते हैं SIGTERM, तो प्रक्रिया नहीं चल रही है और इसलिए यह बाहर निकलने के लिए कोड नहीं चला सकता है।
(वहाँ भी हैं SIGTTINऔर SIGTTOU, जो टीटीवाई परत द्वारा उत्पन्न संकेत हैं जब एक पृष्ठभूमि वाली नौकरी टर्मिनल को पढ़ने या लिखने की कोशिश करती है। उन्हें पकड़ा जा सकता है लेकिन अन्यथा प्रक्रिया को रोक देगा (निलंबित), ठीक वैसे ही SIGTSTP। लेकिन मैं अब जा रहा हूं। इस उत्तर के शेष के लिए उन दोनों को अनदेखा करें।)
आपकी CtrlZप्रक्रिया प्रक्रिया को भेजती है SIGTSTP, जो किसी भी तरह से विशेष रूप से नियंत्रित करने के लिए नहीं दिखाई देती है rsyslogd, इसलिए यह बस लंबित प्रक्रिया को निलंबित कर देती है SIGCONTया SIGKILL।
यहां समाधान भी SIGCONTआपके बाद भेजना है SIGTERMताकि प्रक्रिया सिग्नल प्राप्त कर सके और संभाल सके।
उदाहरण:
sleep 999 &
# Assume we got PID 456 for this process
kill -TSTP 456 # Suspend the process (nicely)
kill -TERM 456 # Terminate the process (nicely). Nothing happens
kill -CONT 456 # Continue the process so it can exit cleanly
जीएनयू सी लाइब्रेरी के लिए प्रलेखन यह अच्छी तरह से समझाता है, मुझे लगता है (मेरी हाइलाइटिंग):
जबकि एक प्रक्रिया को रोक दिया जाता है, कोई और संकेत तब तक इसे वितरित नहीं किया जा सकता है जब तक कि इसे जारी रखा न जाए , सिवाय SIGKILLसंकेतों और (स्पष्ट रूप से) SIGCONTसंकेतों के। संकेतों को लंबित के रूप में चिह्नित किया जाता है, लेकिन तब तक वितरित नहीं किया जाता जब तक कि प्रक्रिया जारी न रखी जाए। सिग्नल हमेशा प्रक्रिया की समाप्ति का कारण बनता है और, अवरुद्ध नहीं किया जा सकता संभाला या नजरअंदाज कर दिया। आप अनदेखा कर सकते हैं , लेकिन यह हमेशा प्रक्रिया को जारी रखने का कारण बनता है अगर इसे रोका जाता है। किसी प्रक्रिया को सिग्नल भेजने से उस प्रक्रिया के किसी भी लंबित स्टॉप सिग्नल को छोड़ दिया जाता है। इसी तरह, किसी प्रक्रिया के लिए किसी भी लंबित सिग्नल को रोक दिया जाता है, जब वह स्टॉप सिग्नल प्राप्त करता हैSIGKILLSIGCONTSIGCONTSIGCONT
kill -15आपके द्वारा पहले ही भेजा गया है"।