110 votes

Pourquoi le chiffre 9 dans la commande kill -9 sous Unix ?

Je comprends que c'est hors sujet, mais je n'ai rien trouvé en ligne et je me disais que les gourous de la programmation de la communauté pourraient peut-être le savoir.
J'utilise généralement

kill -9 pid

pour mettre fin à l'emploi. Je me suis toujours demandé quelle était l'origine du 9. J'ai vérifié en ligne, et on peut lire

"9 Signifie TUER le signal qui ne peut être attrapé ou ignoré. En d'autres termes, il signale au processus (une application en cours d'exécution) de quitter immédiatement" (source : http://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety )

Mais pourquoi 9 ? et qu'en est-il des autres nombres ? y a-t-il une signification historique ou à cause de l'architecture d'Unix ?

95voto

Rafał Rawicki Points 10069

Voir l'article de wikipedia sur les signaux Unix pour la liste des autres signaux. SIGKILL a obtenu le numéro 9.

Vous pouvez aussi bien utiliser les mnémoniques que les chiffres :

kill -SIGKILL pid

77voto

Jonathon Reinhart Points 40535

Il y avait 8 autres signaux qu'ils ont inventés en premier.

60voto

Mike Williamson Points 6836

Je pense qu'une meilleure réponse est simplement la suivante :

mike@sleepycat:~☺  kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP  
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    

Quant à la "signification" de 9... Je dirais qu'il n'y en a probablement aucune. D'après le L'interface de programmation Linux(p 388) :

Chaque signal est défini comme uniq séquentiellement à partir de 1. Ces entiers sont définis avec des des noms symboliques de la forme SIGxxxx . Puisque les chiffres réels utilisés pour chaque signal varient d'une implémentation à l'autre , qui sont toujours utilisés dans les programmes.

34voto

Nabeel Ahmed Points 356

Il faut d'abord savoir ce que sont Signaux dans les systèmes de type Unix (cela ne prendra que quelques minutes).

Signaux sont des interruptions logicielles envoyées à un programme (en cours d'exécution) pour indiquer qu'un événement important s'est produit.

Les événements peuvent varier selon les demandes des utilisateurs erreurs. Certains signaux, tels que le signal d'interruption, indiquent qu'un l'utilisateur a demandé au programme de faire quelque chose qui n'est pas dans la routine habituelle. flux de contrôle habituel.

Il existe plusieurs types de signaux que nous pouvons utiliser - pour obtenir une liste complète de tous les signaux disponibles/possibles, utilisez " $ kill -l commande " : enter image description here

Dans la sortie ci-dessus, il est clairement visible que chaque signal a une valeur ' numéro du signal (par exemple 1, 2, 3) et d'un ' nom du signal (par exemple SIGUP, SIGINT, SIGQUIT). Pour un aperçu détaillé de la fonction de chaque signal, consultez le site suivant lien .

Enfin, pour en venir à la question "Pourquoi le numéro 9 en tuer -9 commande" :

Il existe plusieurs méthodes pour transmettre des signaux à un programme ou à un script. L'une des méthodes les plus couramment utilisées pour envoyer un signal est l'utilisation de la fonction tuer la syntaxe de base est la suivante

$ kill -signal pid

Où le signal est soit le nombre o nom du signal, suivi de l'identifiant du processus (pid) auquel le signal sera envoyé.

Par exemple - -SIGKILL (ou -9 ), le signal tue immédiatement le processus.

$ kill -SIGKILL 1001

et

$ kill -9 1001

Les deux commandes sont identiques, c'est-à-dire que nous avons utilisé le "nom du signal" ci-dessus et que nous avons utilisé le "numéro du signal" plus tard.

Verdict : Il est possible de choisir d'utiliser le "nom du signal" ou le "numéro du signal" avec le tuer commande.

20voto

Stairbob Points 255

Il s'agit d'une référence à "Revoulution 9" des Beatles. Cet enregistrement, qui est une collection d'extraits sonores et de bruits trouvés, montre John Lennon répétant sans cesse "Number 9, Number 9...". De plus, cette chanson a attiré l'attention en 1969 lorsqu'il a été découvert que lorsqu'elle était jouée à l'envers, John semblait dire "Turn me on, dead man...".

Le neuvième signal était donc destiné à être le plus mortel des signaux de mise à mort.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X