2016-02-17 4 views
3

Je veux piège contrôle + C dans mon script pour que je puisse faire un peu de ménage avant de quitter le script. J'ai ce jusqu'à présent:BASH - Piège Ctrl + C pour processus de nettoyage avant quiting

trap ctrl_c INT 

main_script() { 
    #State of the art technology happening here 
} 

ctrl_c() { 
    #Do some cleaning 
    exit 1 
} 

Le problème est que lorsque j'appuie sur contrôle + C et revenir à la console, la console se comporte anormalement. Je ne peux plus voir mes entrées au clavier et appuyer sur Entrée ne va pas à une nouvelle ligne. Par exemple, voici ce que ma console ressemble:

root @ ZonkedCream: ~ # root @ ZonkedCream: ~ # root @ ZonkedCream: ~ #

aide est appréciée

Répondre

2

Nous ne facturons N'ayez pas le code source de votre script ... juste deviner.

Probablement votre script modifie les paramètres stty d'une manière ou d'une autre et ils n'ont pas été restaurés lorsque vous cassez l'application avec CTRL-C. Je vous suggère de sauvegarder vos drapeaux stty dès que votre script démarre et de les restaurer dans votre fonction ctrl_c() ou - au moins - d'utiliser stty sane dans ctrl_c() avant de quitter.