SIGTERM com um atalho de teclado

36

Eu sei que dentro de um terminal, o atalho de teclado Ctrl + C enviará um sinal SIGINT para o processo de primeiro plano atual. Existe uma maneira de configurar um atalho de teclado para enviar SIGTERM ou até SIGKILL para o processo atual? Eu acho que isso poderia me poupar algum tempo.

Estou executando o Ubuntu 11.04

    
por julkiewicz 05.10.2011 / 01:17

3 respostas

20

stty é responsável por controlar isso, você pode já ter uma configuração. Você pode verificar fazendo:

$ 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      

As últimas linhas devem parecer familiares, ^ C = intr é a que você mencionou na sua pergunta. Você pode ler como definir mais via:

$ man stty
    
por 05.10.2011 / 02:08
16

I know that inside a terminal, Ctrl+C keyboard shortcut will send a SIGINT signal to the current foreground process.

Seu conhecimento está incorreto em dois pontos:

  1. O sinal é enviado para o grupo de processos em primeiro plano .
  2. É somente CTRL + C se for o caractere especial que está configurado no momento. (Esse é o padrão na maioria dos sistemas modernos, mas historicamente poderia ter sido o caractere DEL ou outra coisa.)

Is there a way to setup a keyboard shortcut for sending SIGTERM or even SIGKILL to the current process?

Não. A disciplina de linha controla quais sinais são enviados e esses sinais são conectados. Eles são (em um Unix padrão) SIGHUP , SIGINT , SIGTTOU , SIGTTIN , SIGQUIT e SIGTSTP . Não há outros gerados pela disciplina de linha.

    
por 06.10.2011 / 14:32
11

O conjunto de sinais disponíveis para um tty é SIGINT (^ C), SIGTSTP (^ Z) e SIGQUIT (^ \). Você pode atribuir diferentes caracteres a eles, mas esses são os únicos sinais disponíveis. Para seus propósitos, você pode usar ^ \ para enviar SIGQUIT, embora ele aja como um erro e cause um dump principal por padrão. Você pode usar o comando stty para ver e alterar as configurações.

    
por 05.10.2011 / 02:40