Maison > Article > développement back-end > Programme C qui ne s'arrêtera pas lorsque Ctrl+Z est enfoncé
En programmation, lorsqu'un programme fonctionne mal et s'exécute de manière inattendue dans le compilateur du terminal, le programmeur a le droit d'arrêter explicitement l'exécution du programme. Pour arrêter explicitement un programme, l'utilisateur doit connaître le raccourci clavier correct sur lequel appuyer.
Pour terminer l'exécution d'un bloc de code, deux types de raccourcis clavier sont utilisés.
Ctrl+c - Utilisé pour arrêter l'exécution d'un programme qui prend un certain temps pour terminer les opérations d'entrée/sortie, puis met l'exécution en pause. Il envoie un signal SIGINT au processus et le processus sera terminé. Dans certains langages, cela peut être géré via une fonction de signal comme SIGINT en langage C.
Ctrl+z - Utilisé pour arrêter l'exécution d'un programme. Toutes les tâches liées au processus sont fermées et l'exécution est suspendue. Il envoie un signal SINTSTP au processus, mettant fin à l'exécution du programme. Bien que mis en œuvre de la même manière, ce signal est plus puissant que les autres. Cela peut également être géré.
Ici, nous allons écrire un code qui peut contourner l'appel de ctrl+z. Au lieu d'être mis en pause, le programme affichera "ctrl+z ne peut pas mettre ce code en pause".
Comme mentionné ci-dessus, le langage de programmation C peut gérer l'appel de ctrl+z. Lorsque le signal SINTSTP est appelé pour terminer le processus du programme, nous redéfinirons le rôle de ce signal afin que lorsqu'il est utilisé, il ne termine pas le code et n'imprime pas une ligne. La méthode
signal() est utilisée pour gérer ce type de chose.
Démonstration
#include <stdio.h> #include <signal.h> void signalhandler(int sig_num){ signal(SIGTSTP, signalhandler); printf("Cannot execute Ctrl+Z</p><p>"); } int main(){ int a = 1; signal(SIGTSTP, signalhandler); while(a){ } return 0; }
// an infinite loop
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!