Il existe des programmes Linux, par exemple vlc, qui recommandent de taper ctrl+ cdeux fois pour tuer leur exécution à partir d'un terminal si le programme ne s'est pas arrêté après le premier.
Pourquoi taper ctrl+ cfonctionnerait-il deux fois alors que la première fois ne fonctionnait pas?
Réponses:
Ce qu'il fait est entièrement spécifique à l'application. Lorsque vous appuyez sur ctrl+ c, l'émulateur de terminal envoie un signal SIGINT à l'application de premier plan, ce qui déclenche le "gestionnaire de signal" approprié. Le gestionnaire de signal par défaut pour SIGINT met fin à l'application. Mais tout programme peut installer son propre gestionnaire de signaux pour SIGINT (y compris un gestionnaire de signaux qui n'arrête pas du tout l'exécution).
Apparemment, vlc installe un gestionnaire de signaux qui tente de faire un nettoyage / une terminaison gracieuse lors de la première invocation, et revient au comportement par défaut consistant à terminer instantanément l'exécution lors de son deuxième appel.
la source
SIGINT , le signal envoyé par Ctrl+ C, indique conventionnellement à un programme de se diriger vers sa boucle de traitement de commande principale, ou si cela n'a pas de sens, de sortir proprement. Certains programmes exécutent une procédure de nettoyage lorsqu'ils reçoivent un SIGINT. Si le programme est tellement foiré que la procédure de nettoyage échoue, dans certains programmes, un deuxième Ctrl+ Cprovoque la fermeture immédiate du programme. Cela revient à chaque auteur de programme.
Si un second Ctrl+ Cne tue pas le programme, essayez Ctrl+ \, qui envoie SIGQUIT , un signal plus violent (mais toujours capturable), ou essayez Ctrl+ Zde suspendre le programme puis la
kill
commande (par exemple,kill %1
qui envoie SIGTERM , un signal conventionnellement moins violent que SIGQUIT, au travail numéro 1). Si tout le reste échoue, arrêtez le programme aveckill -KILL
, également connu sous le nom d'kill -9
envoi du signal inaccessible SIGKILL .la source