जब मैं कुछ रोकने की कोशिश करता हूं, तो मैं ^C
कभी-कभी ^D
टर्मिनल में उपयोग करता हूं ।
दोनों में क्या अंतर है? क्यों कुछ कार्यक्रम का जवाब नहीं है ^C
, लेकिन ^D
। जब मैं उपयोग करता हूं तो टर्मिनल.एप्प ही क्यों छोड़ता है ^D
?
जब मैं कुछ रोकने की कोशिश करता हूं, तो मैं ^C
कभी-कभी ^D
टर्मिनल में उपयोग करता हूं ।
दोनों में क्या अंतर है? क्यों कुछ कार्यक्रम का जवाब नहीं है ^C
, लेकिन ^D
। जब मैं उपयोग करता हूं तो टर्मिनल.एप्प ही क्यों छोड़ता है ^D
?
जवाबों:
CtrlCटर्मिनल को SIGINT
वर्तमान अग्रभूमि प्रक्रिया में भेजने के लिए कहता है, जो डिफ़ॉल्ट रूप से आवेदन को समाप्त करने में अनुवाद करता है। CtrlDटर्मिनल को बताता है कि उसे मानक इनपुट पर ईओएफ दर्ज करना चाहिए, जो बाहर निकलने की इच्छा के रूप में व्याख्या करता है।
Ctrl+ D( ^D
) का अर्थ है फ़ाइल का अंत । यह केवल एक लाइन की शुरुआत में काम करता है (मैं थोड़ा सरल कर रहा हूं), और इसका कोई प्रभाव नहीं है यदि प्रोग्राम टर्मिनल से इनपुट नहीं पढ़ रहा है। अपने प्रयोग में, ^D
शेल को बताया कि आप कोई और कमांड टाइप करने नहीं जा रहे थे, इसलिए यह बाहर निकल गया; तब टर्मिनल से बाहर निकल गया क्योंकि उसके उपप्रोग्राम को समाप्त कर दिया था।
Ctrl+ C( ^C
) का अर्थ है "व्यवधान", यानी, जो आप कर रहे हैं उसे रोकें। तकनीकी रूप से, दबाव INT सिग्नल^C
भेजता है , जो डिफ़ॉल्ट रूप से एक एप्लिकेशन को समाप्त करता है, लेकिन जो कई कार्यक्रमों में मतलब है कि शीर्ष स्तर पर वापस जाएं (उदाहरण के लिए, शेल में, कमांड लाइन टाइप करना बंद कर दें और एक प्राचीन प्रॉम्प्ट पर वापस जाएं)।
यदि कोई प्रोग्राम जवाब नहीं देता है ^C
, तो आप Ctrl+ \( ^\
) कोशिश कर सकते हैं । यह QUIT सिग्नल भेजता है , जो डिफ़ॉल्ट रूप से एक एप्लिकेशन को समाप्त करता है, और जो इतने सारे प्रोग्राम को रोक नहीं पाता है।
एक और कुंजी जो सिग्नल भेजती है Ctrl+ Z( ^Z
) है। यह TSTP सिग्नल भेजता है , जो अग्रभूमि में चल रहे प्रोग्राम को रोक देता है। (TSTP "टर्मिनल स्टॉप" के लिए छोटा है; यह STOP के समान है लेकिन TSTP को नजरअंदाज किया जा सकता है जबकि STOP नहीं है।) शेल से, आप fg
कमांड के साथ उस प्रोग्राम के निष्पादन को फिर से शुरू कर सकते हैं (अग्रभूमि में फिर से शुरू) या bg
कमांड (फिर से शुरू करें) पृष्ठभूमि)।
इन सभी कुंजियों को stty
कमांड के साथ बदला जा सकता है । कुछ प्रोग्राम, विशेष रूप से फ़ुल-स्क्रीन प्रोग्राम जिनमें प्रमुख बाइंडिंग हैं, उन्हें अक्षम करें।
KeyboardInterrupt
? यह ctrl + d (यदि एक लाइन की शुरुआत में), और ctrl + \ के साथ छोड़ता है।
ऊपर 2 बहुत अच्छे जवाबों को जोड़कर, यहाँ एक उदाहरण दिया गया है:
यदि आप python
शेल में टाइप करते हैं, तो यह आपको अजगर के >>> प्रॉम्प्ट में ले जाता है।
अब, यदि आप हिट करते हैं Ctrl+C
, तो यह कहेगा KeyboardInterrupt
कि >>> में रहें।
आप पाश के लिए एक में प्रवेश करते हैं, तो टाइप करके जैसे for x in (text):
यह आप, दिखा एक ... शीघ्र से आगे टाइप करने के लिए करता है, तो आप हिट इंतजार कर रहा है Ctrl+C
अब, यह बयान के लिए से बाहर निकलें और >>> शीघ्र करना आरंभ कर देंगे
तो आप हिट Ctrl+D
किसी भी बिंदु पर, >>> में या ... यह अजगर शीघ्र से बाहर निकल जाएगा और मूल शेल में वापस आ जाएगा।
इसी तरह, यदि किसी अन्य मशीन में ssh'ed किया जाता है, तो Ctrl+C
कोई भी मौजूदा कमांड को समाप्त कर देगा , ऐसा करेगा और मशीन से भी Ctrl+D
बाहर निकल जाएगा। (इसके अलावा, Delete
कुंजी एक करने के रूप में ही है Ctrl+D
)