STRG+C- und STRG+UNTBR-Signale

Die Tastenkombinationen STRG+C und STRG+UNTBR werden von Konsolenprozessen besonders behandelt. Wenn ein Konsolenfenster den Tastaturfokus besitzt, wird STRG+C oder STRG+UNTBR standardmäßig als Signal (SIGINT oder SIGBREAK) und nicht als Tastatureingabe behandelt. Standardmäßig werden diese Signale an alle Konsolenprozesse übermittelt, die an die Konsole angefügt sind. (Nicht angefügte Prozesse sind nicht betroffen. Siehe Erstellung einer Konsole.) Das System erstellt in jedem Clientprozess einen neuen Thread, um das Ereignis zu behandeln. Der Thread löst eine Ausnahme aus, wenn der Prozess debuggt wird. Der Debugger kann die Ausnahme verarbeiten oder fortfahren, ohne die Ausnahme zu behandeln.

STRG+UNTBR wird immer als Signal behandelt, aber eine Anwendung kann das Standardverhalten für STRG+C auf zwei Arten ändern, mit denen verhindert wird, dass die Handlerfunktionen aufgerufen werden:

  • Die SetConsoleMode-Funktion kann den Eingabemodus ENABLE_PROCESSED_INPUT für den Eingabepuffer einer Konsole aktivieren, sodass STRG+C als Tastatureingabe anstatt als Signal gemeldet wird.
  • Wenn SetConsoleCtrlHandler mit NULL- und TRUE-Werten für seine Parameter aufgerufen wird, ignoriert der aufrufende Prozess STRG+C-Signale. Die normale STRG+C-Verarbeitung wird durch Aufrufen von SetConsoleCtrlHandler mit NULL- und FALSE-Werten wiederhergestellt. Dieses Attribut, mit dem STRG+C-Signale ignoriert oder nicht ignoriert werden, wird von untergeordneten Prozessen geerbt, kann jedoch von jedem Prozess aktiviert oder deaktiviert werden, ohne dass vorhandene Prozesse davon betroffen sind.

Weitere Informationen zur Verarbeitung dieser Signale, einschließlich Timeouts, finden Sie in der Handlerroutine-Rückrufdokumentation.