web-dev-qa-db-fra.com

Ctrl + C ne quitte pas un programme en cours d'exécution dans le terminal

Ok, je ne sais pas pourquoi, mais cette question a souvent été posée, mais aucune des réponses ne semble être utile, mais le problème est assez évident, car je l’ai vérifiée sur plusieurs ordinateurs. Ctrl+C ne tue PAS un programme en cours d'exécution dans un terminal (Ubuntu v10), même s'il est supposé le faire. Je me demande si quelqu'un peut réellement proposer une solution qui fonctionne réellement.

Jusqu'ici, j'ai essayé Ctrl+\, Ctrl+SysRq+K et bien plus encore - rien ne fonctionne!

La seule chose qui a fonctionné, en quelque sorte, est Ctrl+Z, mais il ne tue pas réellement/ne quitte pas le programme, il le met simplement en arrière-plan et vous devez toujours faire kill %1 pour le tuer réellement.

Merci!

6
techexpert

Remarque: Répondez après les commentaires ...

Je suis à peu près sûr que cela va tuer la plupart des programmes terminaux; bien sûr, il ne tue pas ceux qui lancent un nouveau processus, puis renvoie immédiatement l'invite.

Certains programmes peuvent intercepter cette interruption et la gérer comme ils le souhaitent, voire même l’ignorer. Cela peut dépendre beaucoup de savoir si le programme est conçu pour être exécuté dans un terminal ou à partir d'une interface graphique.

Voici quelques exemples de programmes que je viens d’essayer dans les versions 10.04 et 11.10:

ping - which runs continuously by default, so this is the only way to stop it;
find - often takes a long time, so it's useful to be able to end it.
gedit
4
Marty Fried

En fait, de nombreux programmes ne s’arrêteront pas sur Ctrl+C car ils ne feront que créer une exception dans le thread en cours d’exécution. Les programmes multithreads ainsi que les programmes avec "En cas d'exception, continuez." sorte d'instructions va continuer. Le cas approprié d'actions sera l'un des suivants:

  1. Utilisez la combinaison Ctrl + Break.
  2. Appuyez sur Ctrl + Z. Cela n'arrêtera pas le programme mais vous renverra la commande Invite. Ensuite, faites ps -ax | grep *%program_name%*. Recherchez la ligne correspondant à celle que vous souhaitez arrêter. Le premier entier en ligne sera l'identifiant du programme. Faites kill -9 %id% pour finalement l'arrêter.
  3. Si le programme consomme également beaucoup de ressources, vous pouvez utiliser la commande topdans un terminal distinct pour afficher l'ID plus rapidement.
4
Barafu Albino

J'ai rencontré ce problème avec l'un de mes utilisateurs ayant 10.04. Le même problème a été discuté ici CTRL + C ne fonctionne plus dans le terminal

Vous pouvez cependant terminer la commande en utilisant CTRL + SHIFT + C

Il semble que les commandes de copie vers le presse-papiers et de fin de cycle aient changé leurs raccourcis clavier.

2
Umair A. Shahid