Die "Tastatur" sendet keine Signale, die Liniendisziplin. Finden Sie heraus, was eine Liniendisziplin ist, und lesen Sie dann man 1 stty.
Satō Katsura
@SatoKatsura Die Zeilendisziplin ist eine Art Tastaturtreiber.
Gilles 'SO- hör auf böse zu sein'
@ Gilles Nicht wirklich. Der Tastaturtreiber befasst sich mit Scancodes und dergleichen. Die Liniendisziplin ist eine Art übergeordneter Klebstoff, der der Anwendung einen einheitlichen Überblick über viele andere Dinge gibt, wie z. B. Modemleitungen, USB-zu-Seriell-Adapter, HID-Geräte usw.
Satō Katsura,
@SatoKatsura Dies ist ein Teil des Betriebssystems, der sich zwischen der Anwendung und der Tastatur befindet. Mit anderen Worten, es ist Teil des Tastaturtreibers. Bei einem Hardware-Terminal (wie dem vt100) ist dies die einzige Umwandlung der Tastatureingabe, die der Computer im Gegensatz zum Terminal selbst vornimmt.
Gilles 'SO - hör auf, böse zu sein',
Antworten:
27
Die Linux N_TTY-Leitungsdisziplin sendet nur drei verschiedene Signale: SIGINT, SIGQUIT und SIGTSTP. Standardmäßig erzeugen die folgenden Steuerzeichen die Signale:
Hmm, was ist mit Strg-S und Strg-Q? Haben Sie eine Referenz dafür?
Tom Hale
6
Wenn Sie Strg-S oder Strg-Q drücken, sind keine Signale beteiligt. Sie drosseln nur den Fluss der Charaktere und verhindern, dass sie den verzehrenden Prozess erreichen. Wenn die Puffer voll sind, blockiert der erzeugende Prozess schließlich den Schreibsystemaufruf, bis Strg-Q den Fluss drosselt. Beachten Sie, dass der Schreibvorgang normalerweise auch ohne Strg-S blockiert werden kann: Wenn der Empfangsprozess die an ihn gesendeten Daten nur langsam verarbeitet, z. B. weil er die meiste Zeit damit verbringt, bereits empfangene Daten zu verarbeiten, anstatt neue Daten zu lesen .
Johan Myréen
1
man stty | grep -C1 signalist eine Quelle für diese drei, die die einzigen vom Terminal erzeugten Signale sind.
Tom Hale
@TomHale ... Mit Ausnahme von "Modemsteuersignalen" handelt es sich um elektrische Signale. :) Wirklich SIGINT, SIGQUITund SIGTSTPnur die „übliche“ Signale , die von der Linie Disziplin gesendet. Auf BSD haben Sie auch Dinge wie SIGINFO, aber das ist nicht Standard.
Satō Katsura
8
Mit können Sie sttydie Zeichen überprüfen oder ändern, die Signale erzeugen.
intr(Interrupt) generiert SIGINT, quitgeneriert SIGQUIT, susp(Suspend) generiert SIGTSTP. stty -azeigt auch Dinge wie start = ^Q; stop = ^S;und erase = ^?(Rücktaste) an, die keine Signale senden, aber ansonsten die Terminalebene beeinflussen.
Plain sttyzeigt die nicht standardmäßigen Einstellungen an und stty intr ^Qwürde zB das Interrupt-Zeichen auf ^Qanstatt ändern ^C.
Ich denke, ^L(Formular-Feed, neue Seite) ist keine Terminal-Funktion, sondern ein Zeichen, das häufig von Anwendungen verwendet wird, um nach einem Neuzeichnen der Ansicht zu fragen und gleichzeitig die Fenstergröße zu überprüfen.
^Lhat für verschiedene Anwendungen eine unterschiedliche Bedeutung. In den meisten curses-basierten Anwendungen (wie vim, less, mutt, mc, etc.) zwingt einen kompletten Neuaufbau (also erneut überprüft die Fenstergröße), aber in Schalen ( bashetc.) es löscht nur den Bildschirm. Es ist nicht SIGWINCHbeteiligt.
man 1 stty
.Antworten:
Die Linux N_TTY-Leitungsdisziplin sendet nur drei verschiedene Signale: SIGINT, SIGQUIT und SIGTSTP. Standardmäßig erzeugen die folgenden Steuerzeichen die Signale:
quelle
man stty | grep -C1 signal
ist eine Quelle für diese drei, die die einzigen vom Terminal erzeugten Signale sind.SIGINT
,SIGQUIT
undSIGTSTP
nur die „übliche“ Signale , die von der Linie Disziplin gesendet. Auf BSD haben Sie auch Dinge wieSIGINFO
, aber das ist nicht Standard.Mit können Sie
stty
die Zeichen überprüfen oder ändern, die Signale erzeugen.intr
(Interrupt) generiertSIGINT
,quit
generiertSIGQUIT
,susp
(Suspend) generiertSIGTSTP
.stty -a
zeigt auch Dinge wiestart = ^Q; stop = ^S;
underase = ^?
(Rücktaste) an, die keine Signale senden, aber ansonsten die Terminalebene beeinflussen.Plain
stty
zeigt die nicht standardmäßigen Einstellungen an undstty intr ^Q
würde zB das Interrupt-Zeichen auf^Q
anstatt ändern^C
.Ich denke,
^L
(Formular-Feed, neue Seite) ist keine Terminal-Funktion, sondern ein Zeichen, das häufig von Anwendungen verwendet wird, um nach einem Neuzeichnen der Ansicht zu fragen und gleichzeitig die Fenstergröße zu überprüfen.quelle
^L
hat für verschiedene Anwendungen eine unterschiedliche Bedeutung. In den meistencurses
-basierten Anwendungen (wievim
,less
,mutt
,mc
, etc.) zwingt einen kompletten Neuaufbau (also erneut überprüft die Fenstergröße), aber in Schalen (bash
etc.) es löscht nur den Bildschirm. Es ist nichtSIGWINCH
beteiligt.