Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les combinaisons de touches CTRLC et CTRL++BREAK reçoivent une gestion spéciale par les processus de console. Par défaut, lorsqu’une fenêtre de console a le focus clavier, ctrlC ou CTRL++BREAK est traitée comme un signal (SIGINT ou SIGBREAK) et non comme entrée de clavier. Par défaut, ces signaux sont transmis à tous les processus de console attachés à la console. (Les processus détachés ne sont pas affectés. Voir Création d’une console.) Le système crée un thread dans chaque processus client pour gérer l’événement. Le thread déclenche une exception si le processus est débogué. Le débogueur peut gérer l’exception ou continuer avec l’exception non gérée.
CTRL+BREAK est toujours traité comme un signal, mais une application peut modifier le comportement CTRL+C par défaut de deux façons qui empêchent les fonctions du gestionnaire d’être appelées :
- La fonction SetConsoleMode peut désactiver le mode d’entrée ENABLE_PROCESSED_INPUT pour la mémoire tampon d’entrée d’une console. Ctrl+C est donc signalé comme entrée clavier plutôt que comme signal.
- Lorsque SetConsoleCtrlHandler est appelé avec des valeurs NULL et TRUE pour ses paramètres, le processus appelant ignore les signaux CTRL+C. Le traitement Ctrl+C normal est restauré en appelant SetConsoleCtrlHandler avec des valeurs NULL et FALSE . Cet attribut d’ignorer ou de ne pas ignorer les signaux CTRL+C est hérité par les processus enfants, mais il peut être activé ou désactivé par n’importe quel processus sans affecter les processus existants.
Pour plus d’informations sur le traitement de ces signaux, y compris les délais d’expiration, consultez la documentation de rappel de routine du gestionnaire .