From: Tim Peters Date: Mon, 1 Oct 2001 17:58:40 +0000 (+0000) Subject: SF patch [#466877] SIGBREAK is missing from signal module. X-Git-Tag: v2.2.1c1~1507 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1ce3cf774968ea4b8cf21058eea5d4baee0b5349;p=python SF patch [#466877] SIGBREAK is missing from signal module. Patch from Steve Scott to add SIGBREAK support (unique to Windows). --- diff --git a/Misc/ACKS b/Misc/ACKS index 753aa734a4..19bcf2ce76 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -362,6 +362,7 @@ Peter Schneider-Kamp Sam Schulenburg Dietmar Schwertberger Barry Scott +Steven Scott Nick Seidenman Fred Sells Denis Severson diff --git a/Misc/NEWS b/Misc/NEWS index b7ccc862ca..662bd69cdd 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -31,6 +31,26 @@ Tests Windows +- The signal module now supports SIGBREAK on Windows, thanks to Steven + Scott. Note that SIGBREAK is unique to Windows. The default SIGBREAK + action remains to call Win32 ExitProcess(). This can be changed via + signal.signal(). For example: + + # Make Ctrl+Break raise KeyboardInterrupt, like Python's default Ctrl+C + # (SIGINT) behavior. + import signal + signal.signal(signal.SIGBREAK, + signal.default_int_handler) + + try: + while 1: + pass + except KeyboardInterrupt: + # We get here on Ctrl+C or Ctrl+Break now; if we had not changed + # SIGBREAK, only on Ctrl+C (and Ctrl+Break would terminate the + # program without the possibility for any Python-level cleanup). + print "Clean exit" + What's New in Python 2.2a4? Release date: 28-Sep-2001 diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c index 340445fc59..850221ea32 100644 --- a/Modules/signalmodule.c +++ b/Modules/signalmodule.c @@ -383,6 +383,11 @@ initsignal(void) PyDict_SetItemString(d, "SIGINT", x); Py_XDECREF(x); #endif +#ifdef SIGBREAK + x = PyInt_FromLong(SIGBREAK); + PyDict_SetItemString(d, "SIGBREAK", x); + Py_XDECREF(x); +#endif #ifdef SIGQUIT x = PyInt_FromLong(SIGQUIT); PyDict_SetItemString(d, "SIGQUIT", x);