39

Я знаю, что внутри терминала сочетание клавиш Ctrl+C отправит сигнал SIGINT текущему процессу переднего плана. Есть ли способ настроить сочетание клавиш для отправки SIGTERM или даже SIGKILL в текущий процесс? Я думаю, что это может сэкономить мне время.

Я использую Ubuntu 11.04

3 ответа3

22

За это отвечает stty, возможно, у вас уже есть одна настройка. Вы можете проверить, выполнив:

$ stty -e
speed 38400 baud; 53 rows; 225 columns;
lflags: icanon isig iexten echo echoe echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff -ixany imaxbel -iutf8
        -ignbrk brkint -inpck ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd -hupcl -clocal -cstopb -crtscts
        -dsrflow -dtrflow -mdmbuf
discard dsusp   eof     eol     eol2    erase   intr    kill    lnext   
^O      ^Y      ^D      <undef> <undef> ^?      ^C      ^U      ^V      
min     quit    reprint start   status  stop    susp    time    werase  
1       ^\      ^R      ^Q      ^@      ^S      ^Z      0       ^W      

Последние несколько строк должны выглядеть знакомо, ^ C = intr - это та, которую вы упомянули в своем вопросе. Вы можете прочитать, как установить больше через:

$ man stty
17

Я знаю, что внутри терминала сочетание клавиш Ctrl+C отправит сигнал SIGINT текущему процессу переднего плана.

Ваши знания неверны по двум пунктам:

  1. Сигнал отправляется на передний план группы процессов.
  2. Это только CTRL+C, если это специальный символ, который настроен в то время. (Это значение по умолчанию в большинстве современных систем, но исторически это мог быть символ DEL или что-то еще.)

Есть ли способ настроить сочетание клавиш для отправки SIGTERM или даже SIGKILL в текущий процесс?

Нет. Дисциплина линии контролирует, какие сигналы отправляются, и эти сигналы зашиты. Это (в стандартном Unix) SIGHUP , SIGINT , SIGTTOU , SIGTTIN , SIGQUIT и SIGTSTP . Нет других, порожденных дисциплиной линии.

13

Набор доступных сигналов для tty: SIGINT (Ctrl+C), SIGTSTP (Ctrl+Z) и SIGQUIT (Ctrl+\). Вы можете назначать им разные символы, но это единственные доступные сигналы. Для ваших целей вы можете использовать Ctrl+\ для отправки SIGQUIT , хотя это действует как ошибка и по умолчанию вызывает дамп ядра. Вы можете использовать команду stty для просмотра и изменения настроек.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .