Какое-то время Ctrl kbd> + \ kbd> работал как шарм. Теперь это не убивает процесс. На самом деле это ничего не делает.
Пример того, как это НЕ работает:
adi@ebi:~ $ sleep 10
^C
[exited with 130]
adi@ebi:~ $ sleep 10
^\^\^\^\^\^\^\^\^\^\^\
adi@ebi:~ $
Ctrl kbd> + C kbd> останавливает сон как обычно, но Ctrl kbd > + \ kbd> нет, но так и должно быть, верно?
Вы можете перечислить настройки своего терминала, выполнив
stty -a
Он распечатает ваши горячие клавиши, где «^» обозначает Ctrl kbd>, например, у меня есть:
[ 111] Отметьте man stty
, чтобы узнать, какой специальный символ выполняет, например:
quit CHAR
CHAR will send a quit signal
Так что « quit = ^ \ » в моем выводе означает, что если я нажму Ctrl kbd> + \ kbd> отправит сигнал на выход ( SIGQUIT ) процессу. Если ваш выход stty -a
отличается, вы можете установить его с помощью
stty quit ^\
или, если хотите, например, Ctrl kbd> + K kbd> для сигнала SIGQUIT используйте
stty quit ^k
Но учтите, что каждый сигнал, кроме SIGKILL , может быть перехвачен процесс получения, чтобы процесс мог его игнорировать, если его разработчик решил это сделать. А также я думаю, что использовать Ctrl kbd> + C kbd> (SIGINT) лучше, чем использовать Ctrl kbd> + \ kbd> (SIGQUIT) потому что действие по умолчанию для обоих сигналов состоит в том, чтобы завершить процесс, но в случае SIGQUIT также следует выполнить coredump, что, как я думаю, обычно не требуется.
Что Ctrl kbd> + \ kbd> делает, так это отправляет SIGQUIT
на передний план процесса. Некоторые разработчики хотят использовать события SIG * таким образом, которого пользователь может не ожидать или к которому он привык. Вы не упомянули программу, но давайте посмотрим на мой случай с Ctrl kbd> + \ kbd> и mplayer
:
AO: [pulse] 44100Hz 2ch floatle (4 bytes per sample)
Video: no video
Starting playback...
A: 1.7 (01.7) of 0.0 (unknown) 0.4%
// here I press Ctrl + \
MPlayer interrupted by signal 3 in module: play_audio
A: 1.0 (00.9) of 0.0 (unknown) 0.4%
Exiting... (Quit)
Как видите, mplayer поймать сигнал, но не выходите немедленно. Если бы я использовал Ctrl kbd> + C kbd>, он сказал бы «MPlayer прерван сигналом 2 в модуле: play_audio» i>. Я пытаюсь объяснить, что каждая программа может интерпретировать сигналы так, как им нравится, не заботясь о том, что она должна делать. Вы должны просмотреть документацию. Также помните, что SIGKILL
или 9
следует использовать в качестве последнего ресурса. Вы должны убедиться, что нажатия клавиш также отправляются процессу, карта клавиш правильная и ваша клавиатура подключена.