टर्मिनल जनरेट सिग्नल की सूची (जैसे Ctrl-C -> SIGINT)


30

मुझे कीबोर्ड संयोजनों की पूरी सूची कहां मिल सकती है जो लिनक्स में सिग्नल भेजते हैं?

उदाहरण के लिए:

  • Ctrl+ C- संकेत
  • Ctrl+ \- हस्ताक्षर

2
"कीबोर्ड" कोई संकेत नहीं भेजता है, लाइन अनुशासन करता है। पता करें कि एक पंक्ति अनुशासन क्या है, तो पढ़ें man 1 stty
सातु कटुरा

@SatoKatsura लाइन अनुशासन एक कीबोर्ड ड्राइवर की तरह है।
गाइल्स का SO-

@ गिल्स वास्तव में नहीं। कीबोर्ड ड्राइवर स्कैन्कोड और पसंद से संबंधित है। लाइन अनुशासन उच्च स्तरीय गोंद का एक प्रकार है जो एप्लिकेशन को कई अन्य चीजों पर एक एकीकृत दृष्टिकोण देता है, जैसे मॉडेम लाइनें, यूएसबी-टू-सीरियल एडेप्टर, छिपाई डिवाइस, आदि
Satō Katsura

@SatoKatsura यह ऑपरेटिंग सिस्टम का एक हिस्सा है, जो एप्लिकेशन और कीबोर्ड के बीच बैठता है। दूसरे शब्दों में, यह कीबोर्ड ड्राइवर का हिस्सा है। हार्डवेयर टर्मिनल (जैसे vt100) के साथ, यह कीबोर्ड इनपुट का एकमात्र परिवर्तन है जो कंप्यूटर द्वारा टर्मिनल के विपरीत किया जाता है।
गिलेस एसओ- बुराई को रोकना '

जवाबों:


27

लिनक्स N_TTY लाइन अनुशासन केवल तीन अलग-अलग सिग्नल भेजता है: SIGINT, SIGQUIT, और SIGTSTP। डिफ़ॉल्ट रूप से निम्न नियंत्रण वर्ण सिग्नल उत्पन्न करते हैं:

  • Ctrl+ C- संकेत
  • Ctrl+ \- हस्ताक्षर
  • Ctrl+ Z- SIGTSTP

हम्म, Ctrl-S और Ctrl-Q के बारे में क्या? क्या आपके पास इसके लिए कोई संदर्भ है?
टॉम हेल

6
जब आप Ctrl-S या Ctrl-Q दबाते हैं तो कोई सिग्नल शामिल नहीं होता है। वे केवल पात्रों के प्रवाह को कुचलना करते हैं, उन्हें खपत प्रक्रिया तक पहुंचने से रोकते हैं। आखिरकार, जब बफ़र्स भरते हैं, तो उत्पादन प्रक्रिया Ctrl-Q प्रवाह को अनथ्रॉट करने तक राइट सिस्टम कॉल में ब्लॉक हो जाएगी। ध्यान दें कि कॉल लिखने के लिए यह सामान्य है कि Ctrl-S के बिना भी ब्लॉक किया जा सकता है: यदि प्राप्त करने की प्रक्रिया धीमी गति से भेजे गए डेटा का उपभोग करने के लिए है, उदाहरण के लिए, क्योंकि यह अपना अधिकांश समय संसाधित कर रहा है, पहले से प्राप्त डेटा को पढ़ने के बजाय नया डेटा पढ़ रहा है ।
जोहान मायरेन

1
man stty | grep -C1 signalइन तीनों में से एक ऐसा स्रोत है जो टर्मिनल द्वारा उत्पन्न एकमात्र संकेत है।
टॉम हेल

@ टोमाले ... "मॉडम कंट्रोल सिग्नल" को छोड़कर विद्युत सिग्नल हैं। :) वास्तव में SIGINT, SIGQUITऔर SIGTSTPलाइन अनुशासन द्वारा भेजे गए केवल "सामान्य" संकेत हैं। बीएसडी पर भी आपके पास चीजें हैं SIGINFO, लेकिन यह मानक नहीं है।
सातु कटुरा

8

आप sttyसंकेतों को उत्पन्न करने वाले वर्णों को जांचने या बदलने के लिए उपयोग कर सकते हैं ।

$ stty -a | grep -Ewoe '(intr|quit|susp) = [^;]+'
intr = ^C
quit = ^\
susp = ^Z

intr(व्यवधान) उत्पन्न करता है SIGINT, quitउत्पन्न करता है SIGQUIT, susp(निलंबित) उत्पन्न करता है SIGTSTP। और (बैकस्पेस) stty -aजैसी चीजें भी दिखाएंगे , जो सिग्नल नहीं भेजते हैं, लेकिन टर्मिनल लेयर को प्रभावित करते हैं।start = ^Q; stop = ^S;erase = ^?

सादा sttyगैर-डिफ़ॉल्ट सेटिंग्स दिखाएगा और उदाहरण के stty intr ^Qलिए ^Qइसके बजाय रुकावट चरित्र को बदल देगा ^C

मुझे लगता है कि ^L(प्रपत्र फ़ीड, नया पृष्ठ) एक टर्मिनल सुविधा नहीं है, लेकिन एक चरित्र को अक्सर अनुप्रयोगों द्वारा उपयोग किया जाता है ताकि एक दृश्य को फिर से देखने के लिए कहा जा सके, एक ही समय में विंडो का आकार पुन: जांचा जा सके।


1
^Lविभिन्न अनुप्रयोगों के लिए एक अलग अर्थ है। अधिकांश में cursesआधारित अनुप्रयोगों (जैसे vim, less, mutt, mc, आदि) यह एक पूरी तरह redraw (इस प्रकार विंडो का आकार फिर से जाँच) बलों, लेकिन गोले (में bashआदि) यह सिर्फ स्क्रीन साफ करता है। कोई SIGWINCHशामिल नहीं है।
सातु कटुरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.