2016-09-13 6 views
-1

проблемы:Ctrl + U не будет убивать мою программу терминала.^U не убивает, несмотря на Запущенные утверждает


детали: Вот мои результаты от 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 

Как вы можете видеть, он описывает имеющийся сигнал прерывания:
^C = ВВЕДЕНИ
^\ = quit
^U =убить
и т.д ...

Вот бесконечно запущенная программа:

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

Ctrl + C работает

$./main                
^C 
$ 

Ctrl + \ работы

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

Ctrl + Uне работу.
Почему я не могу убить терминальную программу таким образом?

Я мог бы, конечно, найти идентификатор процесса и запустить 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 

Это Бесполезный Не работайте и на xterm. Я также пробовал разные раковины:
, bash, ans zsh.

В чем проблема? Куда мне теперь смотреть?

ответ

1

kill в выводе stty ссылается на символ линии-убийцы, то есть нажатие ^U стирает начало строки.

Символы, которые посылают сигнал прерывания являются intr, quit, susp, и на некоторых системах (не на Linux IIRC) dsusp.

+0

Я вижу. Так что убить нельзя, кроме использования 'kill'? –

+0

Ну, всегда есть ключ sysrq (https://en.wikipedia.org/wiki/Magic_SysRq_key), но это может убить каждый процесс на текущем виртуальном терминале или каждый процесс, кроме init. – ninjalj