Ctrl+C a CTRL+BREAK Signály

Kombinace kláves CTRL+C a CTRL+BREAK přijímají zvláštní zpracování procesy konzoly. Pokud má okno konzoly fokus klávesnice, považuje se ctrl+C nebo CTRL+BREAK za signál (SIGINT nebo SIGBREAK) a ne jako vstup klávesnice. Ve výchozím nastavení se tyto signály předávají všem procesům konzoly, které jsou připojené ke konzole. (Odpojené procesy nejsou ovlivněny. Viz Vytvoření konzoly.) Systém vytvoří nové vlákno v každém procesu klienta pro zpracování události. Vlákno vyvolá výjimku, pokud je proces laděn. Ladicí program může zpracovat výjimku nebo pokračovat s neošetřenou výjimkou.

CTRL+Break je vždy považován za signál, ale aplikace může změnit výchozí chování CTRL+C dvěma způsoby, které brání zavolání funkcí obslužné rutiny:

  • Funkce SetConsoleMode může zakázat režim vstupu ENABLE_PROCESSED_INPUT pro vstupní vyrovnávací paměť konzoly, takže kombinace kláves CTRL+C je hlášena jako vstup klávesnice, nikoli jako signál.
  • Pokud je Vlastnost SetConsoleCtrlHandler volána s hodnotami NULL a TRUE pro své parametry, volající proces ignoruje signály CTRL+C. Normální zpracování CTRL+C se obnoví voláním SetConsoleCtrlHandler s hodnotami NULL a FALSE . Tento atribut ignorování nebo bez ohledu na signály CTRL+C je zděděný podřízenými procesy, ale může být povolen nebo zakázán jakýmkoli procesem, aniž by to ovlivnilo existující procesy.

Další informace o tom, jak se tyto signály zpracovávají, včetně časových limitů, najdete v dokumentaci k zpětnému volání rutiny rutiny .