答え1
この仮定は正しくありません。これらのキーの組み合わせは、シェルではなく端末(エミュレータ)によって解釈されます。シェルはそれらを見ることができません。
を使用してフォアグラウンドプロセスを停止して^Z
から実行できますkill -KILL %%
。おそらく、キーバインディングを使用して2番目の部分を実行できます。
答え2
SIGINT/SIGQUIT/SIGTSTP の送信は、端末エミュレータではなく、カーネルの端末または擬似端末デバイスドライバです。
たとえば、シリアル接続を介して端末から文字(バイト)を受信した場合、または疑似端末のマスター側の端末エミュレータから文字(バイト)を受信したときに、カーネルがプロセスのすべてのプロセスにSIGINT信号を送信するように構成されているとします。stty intr '^C'
します。^C
。0x3
フォアグラウンドプロセスグループttyデバイス(そして、特定の時間にどのプロセスグループが前景であるかを決定するのは対話型シェルです)。
少なくともLinuxには、フォアグラウンドプロセスグループに送信されるSIGKILL信号に文字をマッピングするための等価なターミナルドライバ(termios)設定はありません。
ターミナルエミュレータは、xterm
SIGKILLを含むいくつかの信号とsend-signal(kill)
特定のX11イベント(KeyPressイベントなど)のアクションを送信するように設定できます。
xterm -xrm 'XTerm.VT100.translations: #override Ctrl <Key>k: send-signal(kill)'
たとえば、xterm
+にSIGKILLを送信するプログラムが起動します。Ctrlk
+ MouseButton1を使用すると、メインメニューCtrl項目でも同じことができますSend KILL Signal
。
ただし、スレーブ端末デバイスの前景プロセスグループではなく、通常はシェルを実行するために独自に作成するプロセスグループに送信されます。だからおそらくあなたが望むようにはなりません。
ターミナルエミュレータがSIGKILLをフォアグラウンドプロセスグループに送信する方法を見つけたとしても、まずプロセスが別のuidで実行されている場合、それを行うことはできず、何もしません。たとえば、Aがssh
//...の後にフォアグラウンドプロセスグループにシグナルを送信する必要があるため、セッションが開始されます。script
screen
彼ら端末機器
答え3
GUI端末エミュレータを使用している場合は、SIGKILLを送信する可能性が高くなります。そのメニューを確認してください。私はKonsoleを使用していますが、編集メニューにSIGKILLなどの信号を送信できる「信号を送信」サブメニューがあります。