Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Tangentkombinationerna CTRL+C och CTRL+BREAK får särskild hantering av konsolprocesser. När ett konsolfönster som standard har tangentbordsfokus behandlas CTRL+C eller CTRL+BREAK som en signal (SIGINT eller SIGBREAK) och inte som tangentbordsinmatning. Som standard skickas dessa signaler till alla konsolprocesser som är anslutna till konsolen. (Frånkopplade processer påverkas inte. Se Skapa en konsol.) Systemet skapar en ny tråd i varje klientprocess för att hantera händelsen. Tråden genererar ett undantag om processen debuggas. Felsökningsprogrammet kan hantera undantaget eller fortsätta med undantaget ohanterat.
CTRL+BREAK behandlas alltid som en signal, men ett program kan ändra standardbeteendet för CTRL+C på två sätt som förhindrar att hanteringsfunktionerna anropas:
- Funktionen SetConsoleMode kan inaktivera ENABLE_PROCESSED_INPUT indataläge för en konsols indatabuffert, så CTRL+C rapporteras som tangentbordsindata i stället för som en signal.
- När SetConsoleCtrlHandler anropas med NULL - och TRUE-värden för sina parametrar ignorerar anropsprocessen CTRL+C-signaler. Normal CTRL+C-bearbetning återställs genom att Anropa SetConsoleCtrlHandler med NULL - och FALSE-värden . Det här attributet för att ignorera eller inte ignorera CTRL+C-signaler ärvs av underordnade processer, men det kan aktiveras eller inaktiveras av någon process utan att påverka befintliga processer.
Mer information om hur dessa signaler bearbetas, inklusive timeouter, finns i dokumentationen för hanteringsrutinåteranrop .