Maison > développement back-end > C++ > le corps du texte

Programme C qui ne s'arrêtera pas lorsque Ctrl+Z est enfoncé

WBOY
Libérer: 2023-09-19 18:13:02
avant
1382 Les gens l'ont consulté

Programme C qui ne sarrê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.

Exemple

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;
}
Copier après la connexion

Sortie

// an infinite loop
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal