Ctrl-s हैंग टर्मिनल एमुलेटर?


311

मैं एक वाक्य में आया था vimdoc:

Note: CTRL-S does not work on all terminals and might block
                further input, use CTRL-Q to get going again.

और यह कुंजी वास्तव में मेरी लटकी हुई है। मैं सोच रहा था कि यह विम का दोष था, क्योंकि जब मैं emacs nox में उपयोग करता C-s/ करती हूं तो कोई समस्या नहीं थी C-x C-s। हालाँकि अभी जब मैं एक मेन्यू पढ़ रहा था और दबाया गया था Ctrl-s, तब भी यह लटका हुआ है man (मैं lessपेजर के रूप में सेट कर रहा हूँ )।

तो क्या कोई बता सकता है कि क्या हो रहा है?

टर्मिनल एमुलेटर हैं xtermऔर lxterminal, और ttyयह समस्या भी है। और A Ctrl+ qसभी मामलों में प्रक्रिया को फिर से सही बनाता है।


6
यह एक बेवकूफी भरा सवाल हो सकता है लेकिन आपने अपने सवाल में जो कोशिश की है उसका उल्लेख नहीं किया है। आपने C-qस्क्रॉलिंग को पुनः सक्षम करने का प्रयास किया है, है ना?
hrrrmiller

3
@ h3rrmiller हाँ, यह सही है। लेकिन मैं सिर्फ यह जानना चाहूंगा कि ctrl-sइस प्रक्रिया के लटकने का कारण क्या है।
होंग्क्सू चेन

इससे पहले कि वहाँ स्क्रॉल लॉक कुंजी के साथ कीबोर्ड थे C-sऔर C-qपुराने दिनों "स्क्रॉल लॉक टॉगल" थे। आप जोड़कर इस कार्यक्षमता को अक्षम कर सकते हैं stty ixanyऔर stty ixoff -ixonअपने को.bashrc
h3rrmiller

2
टर्मिनल एमुलेटरों में यह आजकल एक बेवकूफ ऐतिहासिक सेटिंग है; अपने टर्मिनल को ठीक करने के लिए इस संबंधित प्रश्न को देखें ।
इंगो करकट

1
@IngoKarkat मैं इसे बेवकूफ नहीं कहूंगा ... मैं अभी भी समय
hrrmiller

जवाबों:


361

इस सुविधा को सॉफ्टवेयर फ्लो कंट्रोल (XON / XOFF फ्लो कंट्रोल) कहा जाता है।

जब डेटा लिंक का एक छोर (इस मामले में टर्मिनल एमुलेटर) कोई और डेटा प्राप्त नहीं कर सकता है (क्योंकि बफर पूर्ण है या पास पूर्ण या उपयोगकर्ता भेजता है C-s) तो यह भेजने का अंत बताने के लिए "XOFF" भेजेगा "XON" संकेत प्राप्त होने तक रुकने के लिए डेटा लिंक।

हुड के नीचे क्या हो रहा है "एक्सओएफएफ" कर्नेल में TTY ड्राइवर को उस प्रक्रिया को डालने के लिए कह रहा है जो डेटा को एक नींद की स्थिति में भेज रहा है (जैसे मूवी को रोकना) जब तक कि TTY ड्राइवर को "XON" नहीं भेजा जाता है प्रक्रिया को फिर से शुरू करने के लिए कर्नेल जैसे कि इसे पहले कभी नहीं रोका गया था।

C-sटर्मिनल स्क्रॉल लॉक को सक्षम करता है। जो आपके टर्मिनल को स्क्रॉल करने से रोकता है (सॉफ़्टवेयर के आउटपुट को रोकने के लिए "XOFF" सिग्नल भेजकर)।

C-qस्क्रॉल लॉक अक्षम करता है। टर्मिनल स्क्रॉलिंग फिर से शुरू करना (सॉफ्टवेयर के आउटपुट को फिर से शुरू करने के लिए "XON" सिग्नल भेजकर)।

यह सुविधा विरासत है (जब टर्मिनल बहुत धीमे थे और स्क्रॉल करने की अनुमति नहीं थी) और डिफ़ॉल्ट रूप से सक्षम है।

इस सुविधा को अक्षम करने के लिए आपको ~/.bash_profileया तो निम्नलिखित की आवश्यकता होगी ~/.bashrc:

stty -ixon

10
वास्तव में मुझे लगता है कि यह 70 के दशक के अंत तक चला जाता है, अगर 60 के दशक में नहीं।
कीथ

हालाँकि ऐसा लगता है कि यह Ubuntu 16.04 पर काम नहीं कर रहा है।
रॉबर्ट

3
"stty -ixon" <----- यह उन सबसे महत्वपूर्ण चीजों में से एक है जो मैंने पिछले सप्ताह इंटरनेट पर पढ़ी है। धन्यवाद।
ब्रैड पी।

दरअसल, इसका इतिहास 80 के दशक से कई दशक पहले शुरू होता है। TTY ध्वस्त देखें ।
रोबोएलेक्स

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