Sterownik terminala jądra ( termios
) interpretuje specjalne klucze, które można wpisać, aby wysłać sygnał do procesu, wysłać koniec pliku, usunąć znaki itp. Jest to podstawowa funkcjonalność jądra systemu Unix i bardzo podobna w większości implementacji systemów Unix i Linux.
Na stty
polecenie wyświetla lub ustawia termios
znaki specjalne, a także inne parametry dla terminala sterownika linii.
Wywołaj, stty -a
aby zobaczyć bieżące wartości znaków specjalnych i inne „ustawienia linii terminala”. W poniższych przykładach widać, że intr
to Ctrl+ C, eof
to Ctrl+ D, susp
to Ctrl+ Z. (Usunąłem inne dane wyjściowe, aby wyświetlić tylko ustawienia znaków specjalnych):
stty -a
znaki specjalne w GNU / Linux:
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
stty -a
znaki specjalne w FreeBSD:
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ^@; eol2 = ^@;
erase = ^?; erase2 = ^H; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 0; werase = ^W;
Aby zmienić wartość znaku specjalnego, na przykład aby zmienić znak przerwania z Ctrl+ Cna Ctrl+ Ewywołaj w stty
ten sposób ( ^E
to dosłownie dwa znaki, circumflex ( ^
), po którym następuje litera E
):
stty intr '^E'
Aby uzyskać więcej informacji, zobacz strony podręcznika dla stty
i termios
. W systemie GNU / Linux możesz także spojrzeć na tty_ioctl
stronę podręcznika .
Uwagi:
intr
Klawisz ( Ctrl+ Cdomyślnie), faktycznie nie zabić proces, ale powoduje, że jądro wysłać sygnał przerwania ( SIGINT
) do wszystkich procesów w grupie procesowej. Procesy mogą zorganizować przechwytywanie lub ignorowanie sygnału, ale większość procesów zostanie zakończona, co jest zachowaniem domyślnym.
Powodem, dla którego Ctrl+ się dwylogowuje, jest to, że sterownik linii terminala wysyła EOF (koniec pliku) na standardowe wejście powłoki. Powłoka kończy działanie, gdy odbiera koniec pliku na swoim standardowym wejściu.
bind -p
wymienić, tak jak whelp bind
przypadku innych