web-dev-qa-db-fra.com

SIGTERM avec un raccourci clavier

Je sais que dans un terminal, Ctrl+C Le raccourci clavier envoie un signal SIGINTau processus de premier plan en cours. Est-il possible de configurer un raccourci clavier pour envoyer SIGTERMou même SIGKILLau processus en cours? Je pense que cela pourrait me faire gagner du temps.

J'utilise Ubuntu 11.04

39
julkiewicz

stty est responsable du contrôle, vous avez peut-être déjà une configuration. Vous pouvez vérifier en faisant:

$ 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      

Les dernières lignes doivent vous paraître familières, ^ C = intr est celui que vous avez mentionné dans votre question. Vous pouvez lire comment définir plus via:

$ man stty
22
polynomial

Je sais que dans un terminal, Ctrl+C Le raccourci clavier envoie un signal SIGINT au processus de premier plan en cours.

Votre connaissance est incorrecte sur deux points:

  1. Le signal est envoyé au premier plan groupe de processus.
  2. C'est seulement CTRL+C si c'est le caractère spécial qui se trouve être configuré à ce moment-là. (C'est la valeur par défaut sur la plupart des systèmes modernes, mais historiquement, il aurait pu s'agir du caractère DEL ou autre chose.)

Existe-t-il un moyen de configurer un raccourci clavier pour envoyer SIGTERM ou même SIGKILL au processus en cours?

Non. La discipline de ligne contrôle les signaux envoyés et ceux-ci sont câblés. Ils sont (dans Unix standard) SIGHUP, SIGINT, SIGTTOU, SIGTTIN, SIGQUIT et SIGTSTP. Il n'y a pas d'autres générés par la discipline de ligne.

17
JdeBP

L'ensemble des signaux disponibles pour un terminal est SIGINT(Ctrl+C), SIGTSTP(Ctrl+Z) et SIGQUIT(Ctrl+\). Vous pouvez leur attribuer différents caractères, mais ce sont les seuls signaux disponibles. Pour vos besoins, vous pourrez peut-être utiliser Ctrl+\ pour envoyer SIGQUITname__, bien qu’il s’agisse d’une erreur et provoque un vidage mémoire par défaut. Vous pouvez utiliser la commande sttypour afficher et modifier les paramètres.

13
Chris Page