„Klawiatura” nie wysyła żadnych sygnałów, dyscyplina liniowa tak. Dowiedz się, czym jest dyscyplina liniowa, a następnie przeczytaj man 1 stty.
Satō Katsura
@SatoKatsura Dyscyplina liniowa jest rodzajem sterownika klawiatury.
Gilles „SO- przestań być zły”
@Gilles Niezupełnie. Sterownik klawiatury obsługuje skancody i tym podobne. Dyscyplina liniowa jest rodzajem kleju na wyższym poziomie, który zapewnia aplikacji jednolity widok na wiele innych rzeczy, takich jak linie modemowe, adaptery USB-na-szeregowe, urządzenia HID itp.
Satō Katsura
@SatoKatsura Jest to część systemu operacyjnego, która znajduje się pomiędzy aplikacją a klawiaturą. Innymi słowy, jest to część sterownika klawiatury. W przypadku terminala sprzętowego (takiego jak vt100) jest to jedyna transformacja klawiatury wprowadzana przez komputer w przeciwieństwie do samego terminala.
Gilles „SO- przestań być zły”
Odpowiedzi:
27
Dyscyplina linii Linux N_TTY wysyła tylko trzy różne sygnały: SIGINT, SIGQUIT i SIGTSTP. Domyślnie następujące znaki sterujące wytwarzają sygnały:
Hmm, a co z Ctrl-S i Ctrl-Q? Czy masz do tego referencje?
Tom Hale
6
Po naciśnięciu Ctrl-S lub Ctrl-Q nie są włączane żadne sygnały. Po prostu dławią przepływ znaków, uniemożliwiając im dotarcie do procesu konsumpcji. W końcu, gdy bufory się zapełniają, proces produkcyjny zablokuje się w zapisie wywołania systemowego, dopóki Ctrl-Q nie zablokuje przepływu. Zauważ, że normalne jest, że wywołanie zapisu może blokować nawet bez Ctrl-S: jeśli proces odbierania jest powolny, aby zużywać przesłane do niego dane, np. Ponieważ spędza większość czasu na przetwarzaniu już otrzymanych danych zamiast odczytywania nowych danych .
Johan Myréen
1
man stty | grep -C1 signaljest jednym źródłem dla tych trzech, które są jedynymi sygnałami generowanymi przez terminal.
Tom Hale
@TomHale ... Z wyjątkiem „sygnałów sterujących modemem” to sygnały elektryczne. :) Naprawdę SIGINT, SIGQUITi SIGTSTPsą tylko „zwykłe” sygnały wysyłane przez dyscypliny linii. Na BSD masz też takie rzeczy SIGINFO, ale to nie jest standardowe.
Satō Katsura
8
Możesz użyć sttydo sprawdzenia lub zmiany znaków generujących sygnały.
intr(przerwać) generuje SIGINT, quitgeneruje SIGQUIT, susp(zawiesza) generuje SIGTSTP. stty -apokaże także rzeczy takie jak start = ^Q; stop = ^S;i erase = ^?(backspace), które w przeciwnym razie nie wysyłają sygnałów, ale wpływają na warstwę końcową.
Zwykły sttypokaże ustawienia inne niż domyślne i np stty intr ^Q. Zmieni znak przerwania na ^Qzamiast ^C.
Myślę, że ^L(wysuw formularza, nowa strona) nie jest funkcją terminalu, ale postacią często używaną przez aplikacje, by poprosić o przerysowanie widoku, sprawdzając jednocześnie rozmiar okna.
^Lma inne znaczenie dla różnych aplikacji. W większości curseszastosowań opartych o (takich jak vim, less, mutt, mc, itd.) To wymusza pełną narysowany (zatem ponowne sprawdzenie rozmiaru okna), ale w muszli ( bashitp) to po prostu czyści ekran. Nie jest SIGWINCHzaangażowany.
man 1 stty
.Odpowiedzi:
Dyscyplina linii Linux N_TTY wysyła tylko trzy różne sygnały: SIGINT, SIGQUIT i SIGTSTP. Domyślnie następujące znaki sterujące wytwarzają sygnały:
źródło
man stty | grep -C1 signal
jest jednym źródłem dla tych trzech, które są jedynymi sygnałami generowanymi przez terminal.SIGINT
,SIGQUIT
iSIGTSTP
są tylko „zwykłe” sygnały wysyłane przez dyscypliny linii. Na BSD masz też takie rzeczySIGINFO
, ale to nie jest standardowe.Możesz użyć
stty
do sprawdzenia lub zmiany znaków generujących sygnały.intr
(przerwać) generujeSIGINT
,quit
generujeSIGQUIT
,susp
(zawiesza) generujeSIGTSTP
.stty -a
pokaże także rzeczy takie jakstart = ^Q; stop = ^S;
ierase = ^?
(backspace), które w przeciwnym razie nie wysyłają sygnałów, ale wpływają na warstwę końcową.Zwykły
stty
pokaże ustawienia inne niż domyślne i npstty intr ^Q
. Zmieni znak przerwania na^Q
zamiast^C
.Myślę, że
^L
(wysuw formularza, nowa strona) nie jest funkcją terminalu, ale postacią często używaną przez aplikacje, by poprosić o przerysowanie widoku, sprawdzając jednocześnie rozmiar okna.źródło
^L
ma inne znaczenie dla różnych aplikacji. W większościcurses
zastosowań opartych o (takich jakvim
,less
,mutt
,mc
, itd.) To wymusza pełną narysowany (zatem ponowne sprawdzenie rozmiaru okna), ale w muszli (bash
itp) to po prostu czyści ekran. Nie jestSIGWINCH
zaangażowany.