क्यों Ctrl + c टाइप करने से दो बार लिनक्स में चलने की प्रक्रिया बंद हो जाएगी?


24

लिनक्स प्रोग्राम हैं, उदाहरण के लिए vlc, जो टर्मिनल से अपने निष्पादन को मारने के लिए ctrl+ cदो बार टाइप करने की सलाह देते हैं यदि प्रोग्राम पहले एक के बाद बंद नहीं हुआ।

जब पहली बार काम नहीं किया था तो टाइपिंग ctrl+ cदो बार काम क्यों करेगा ?


जवाबों:


35

यह क्या करता है पूरी तरह से विशिष्ट अनुप्रयोग है। जब आप प्रेस ctrl+ c, टर्मिनल एमुलेटर एक भेजता SIGINT अग्रभूमि आवेदन है, जो उचित "संकेत हैंडलर" से चलाता है के लिए संकेत। SIGINT के लिए डिफ़ॉल्ट सिग्नल हैंडलर एप्लिकेशन को समाप्त करता है। लेकिन कोई भी कार्यक्रम SIGINT के लिए अपना स्वयं का सिग्नल हैंडलर स्थापित कर सकता है (सिग्नल हैंडलर सहित जो निष्पादन को बिल्कुल भी नहीं रोकता है)।

जाहिरा तौर पर, vlc एक सिग्नल हैंडलर स्थापित करता है जो पहली बार आह्वान किए जाने पर कुछ सफाई / सुशोभित समाप्ति करने का प्रयास करता है, और दूसरी बार लागू होने पर तुरंत निष्पादन को समाप्त करने के डिफ़ॉल्ट व्यवहार पर वापस आ जाता है।


3
कुछ सिस्टम पर, हैंडलर को कॉल करने के बाद SIG_DFL को सिग्नल वापस मिलता है (उसी सिग्नल पर हैंडलर को दो बार कॉल करने से बचने के लिए); इसे SysV शब्दार्थ कहा जाता है। कई प्रोग्राम हैंडलर के अंत में सिग्नल हैंडलर को मूल ऑन-प्रोग्राम सेटिंग्स पर सेट नहीं करते हैं। यह आमतौर पर एक प्रोग्रामिंग बग होगा। सिग्नल (2) मैनपेज पर अधिक जानकारी पढ़ें ।
Arcege

16

SIGINT , Ctrl+ द्वारा भेजा गया संकेत C, पारंपरिक रूप से अपने मुख्य कमांड प्रोसेसिंग लूप को तोड़ने के लिए एक प्रोग्राम बताता है, या यदि यह समझ में नहीं आता है, तो सफाई से बाहर निकलने के लिए। जब वे एक संकेत प्राप्त करते हैं तो कुछ प्रोग्राम क्लीनअप प्रक्रिया चलाते हैं। यदि प्रोग्राम इतना गड़बड़ है कि सफाई प्रक्रिया विफल हो जाती है, तो कुछ कार्यक्रमों में, एक दूसरा Ctrl+ Cप्रोग्राम को तुरंत छोड़ने का कारण बनता है। ऐसा करना प्रत्येक प्रोग्राम लेखक पर निर्भर है।

यदि कोई दूसरा Ctrl+ Cप्रोग्राम को नहीं मारता है, तो Ctrl+ कोशिश करें \, जो SIGQUIT को भेजता है, जो एक अधिक हिंसक (लेकिन अभी भी कैटलेबल सिग्नल) है, या प्रोग्राम को निलंबित करने के लिए Ctrl+ और फिर कमांड (उदाहरण के लिए, जो SIGTERM भेजता है , एक पारंपरिक रूप से कम शक्तिशाली संकेत) SIGQUIT की तुलना में, जॉब नंबर 1 तक)। यदि अन्य सभी विफल हो जाते हैं, तो प्रोग्राम को मारने के लिए भी जाना जाता है , जिसे अनटचेबल सिग्नल SIGKILL भेज रहा है ।Zkillkill %1kill -KILLkill -9

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.