2016-09-13 17 views
-1

問題主張:CTRL +Uは私の端末プログラムを殺すことはありません。^Uは、sttyのにもかかわらず、殺さない


詳細:ここにssty --allからの私の結果は:

speed 38400 baud; rows 24; columns 80; line = 0; 
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; 
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; 
lnext = ^V; flush = ^O; min = 1; time = 0; 
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts 
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff 
-iuclc ixany imaxbel iutf8 
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt 
echoctl echoke 

あなたが見ることができるように、それが利用可能な信号が割り込みについて説明します。

INTR ^C = ^\ = 終了
^U = ここ

が無限に実行中のプログラムです...
などを殺す:

を作品

int main(){while(true){}} 

CTRL + C


CTRL + \働く

$./main               
^\[1] 6331 quit (core dumped) ./main 
$ 

CTRL +Uない作業を行います。
このようにターミナルプログラムを強制終了できないのはなぜですか?

私はもちろんプロセスIDを見つけて実行することができますkill -9 <PID>
しかし、私は省略形を動作させたいと思います。


私はUbuntuの上だ:ここで

lsb_release --all 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 14.04.5 LTS 
Release: 14.04 
Codename: trusty 

は私の端末スペックですが、私は他の端末を試してみました(おそらくいない関連)き

gnome-terminal --version           
GNOME Terminal 3.6.2 

それはdidnのxtermでも作業します。私はまた別のシェルを試しました:
sh,bash、ans zsh

何が問題なのですか?今どこを見ますか?

答えて

1

killsttyの出力はキルライン文字を参照しています。つまり、^Uを押すと、行の先頭まで消去されます。割り込み信号を送る

文字がintrquitsuspあり、そしていくつかのシステムでは(ないのLinux IIRC上)、dsusp

+0

です。だから 'kill 'を使う以外の方法はありませんか? –

+0

さて、常にsysrqキー(https://en.wikipedia.org/wiki/Magic_SysRq_key)がありますが、これは現在の仮想端末上のすべてのプロセス、またはinit以外のすべてのプロセスを強制終了します。 – ninjalj

関連する問題