端末生成シグナルのリスト(例:Ctrl-C-> SIGINT)


30

Linuxでシグナルを送信するキーボードの組み合わせの完全なリストはどこで入手できますか?

例えば:

  • Ctrl+ C-SIGINT
  • Ctrl+ \-SIGQUIT

2
「キーボード」は信号を送信しませんが、回線制御は送信します。行規律とは何かを調べてから、を読んでくださいman 1 stty
桂佐藤

@SatoKatsura回線制御は、一種のキーボードドライバーです。
ジル 'SO-悪であるのをやめる'

@Gillesそうでもない。キーボードドライバーは、スキャンコードなどを処理します。回線制御規則は、モデム回線、USB -シリアルアダプタ、HIDデバイス、などのように、他の多くのものの上にアプリケーションに統一ビューを提供し、より高いレベルの接着剤の一種である
佐藤桂

@SatoKatsuraこれは、アプリケーションとキーボードの間に位置するオペレーティングシステムの一部です。つまり、キーボードドライバーの一部です。ハードウェア端末(vt100など)を使用すると、キーボード入力の変換は、端末自体ではなくコンピューターによって行われます。
ジル 'SO-悪であるのをやめる'

回答:


27

Linux N_TTY回線制御は、SIGINT、SIGQUIT、およびSIGTSTPの3つの異なる信号のみを送信します。デフォルトでは、次の制御文字が信号を生成します。

  • Ctrl+ C-SIGINT
  • Ctrl+ \-SIGQUIT
  • Ctrl+ Z-SIGTSTP

うーん、Ctrl-SとCtrl-Qはどうですか?これに関するリファレンスはありますか?
トム・ヘイル

6
Ctrl-SまたはCtrl-Qを押しても信号は関係ありません。キャラクターの流れを調整するだけで、消費プロセスに到達するのを防ぎます。最終的に、バッファーがいっぱいになると、Ctrl-Qがフローのスロットルを解除するまで、生成プロセスは書き込みシステムコールをブロックします。書き込みの呼び出しはCtrl-Sなしでもブロックできるのが普通であることに注意してください:受信プロセスが送信データの消費に時間がかかる場合、たとえば、新しいデータを読み取る代わりにすでに受信したデータの処理にほとんどの時間を費やしている場合。
ヨハンMyréen17年

1
man stty | grep -C1 signal端末によって生成される唯一の信号であるこれら3つのソースの1つです。
トム・ヘイル

@TomHale ...「モデム制御信号」を除き、電気信号です。:)本当に、SIGINTSIGQUITおよびSIGTSTPラインの規律によって送られただけで、「通常の」の信号です。BSDにはのようなものもありますSIGINFOが、それは標準ではありません。
桂さとう

8

を使用sttyして、信号を生成する文字を確認または変更できます。

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

intr(割り込み)を生成SIGINTquit生成SIGQUITsusp(中断)を生成しSIGTSTPます。stty -aまたstart = ^Q; stop = ^S;erase = ^?(バックスペース)などのようなものも表示します。これらは信号を送信しませんが、そうでなければターミナルレイヤーに影響します。

Plain sttyはデフォルト以外の設定を表示し、たとえばstty intr ^Q、割り込み文字をの^Q代わりに変更し^Cます。

私が思うに^L(フォームフィード、新しいページ)は、端末の機能ではありませんが、多くの場合、同時にウィンドウサイズを再チェック、再描画のためにビューを依頼するアプリケーションで使用される文字。


1
^Lアプリケーションによって意味が異なります。ほとんどでcurses(のようなベースのアプリケーションvimlessmuttmc、など)それは(したがって、ウィンドウのサイズをチェックRE)の完全な再描画を強制しますが、シェル(中bashなど)それだけで画面をクリアします。関係ありませんSIGWINCH
桂佐藤
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.