• Gregory P. Smith's avatar
    bpo-1054041: Exit properly after an uncaught ^C. (#11862) · 38f11cc3
    Gregory P. Smith yazdı
    * bpo-1054041: Exit properly by a signal after a ^C.
    
    An uncaught KeyboardInterrupt exception means the user pressed ^C and
    our code did not handle it.  Programs that install SIGINT handlers are
    supposed to reraise the SIGINT signal to the SIG_DFL handler in order
    to exit in a manner that their calling process can detect that they
    died due to a Ctrl-C.  https://www.cons.org/cracauer/sigint.html
    
    After this change on POSIX systems
    
     while true; do python -c 'import time; time.sleep(23)'; done
    
    can be stopped via a simple Ctrl-C instead of the shell infinitely
    restarting a new python process.
    
    What to do on Windows, or if anything needs to be done there has not
    yet been determined.  That belongs in its own PR.
    
    TODO(gpshead): A unittest for this behavior is still needed.
    
    * Do the unhandled ^C check after pymain_free.
    
    * Return STATUS_CONTROL_C_EXIT on Windows.
    
    * Fix ifdef around unistd.h include.
    
    * 📜🤖 Added by blurb_it.
    
    * Add STATUS_CTRL_C_EXIT to the os module on Windows
    
    * Add unittests.
    
    * Don't send CTRL_C_EVENT in the Windows test.
    
    It was causing CI systems to bail out of the entire test suite.
    
    See https://dev.azure.com/Python/cpython/_build/results?buildId=37980
    for example.
    
    * Correct posix test (fail on macOS?) check.
    
    * STATUS_CONTROL_C_EXIT must be unsigned.
    
    * Improve the error message.
    
    * test typo :)
    
    * Skip if the bash version is too old.
    
    ...and rename the windows test to reflect what it does.
    
    * min bash version is 4.4, detect no bash.
    
    * restore a blank line i didn't mean to delete.
    
    * PyErr_Occurred() before the Py_DECREF(co);
    
    * Don't add os.STATUS_CONTROL_C_EXIT as a constant.
    
    * Update the Windows test comment.
    
    * Refactor common logic into a run_eval_code_obj fn.
    38f11cc3
Adı
Son kayıt (commit)
Son güncelleme
..
cpython Loading commit data...
internal Loading commit data...
Python-ast.h Loading commit data...
Python.h Loading commit data...
abstract.h Loading commit data...
asdl.h Loading commit data...
ast.h Loading commit data...
bitset.h Loading commit data...
bltinmodule.h Loading commit data...
boolobject.h Loading commit data...
bytearrayobject.h Loading commit data...
bytes_methods.h Loading commit data...
bytesobject.h Loading commit data...
cellobject.h Loading commit data...
ceval.h Loading commit data...
classobject.h Loading commit data...
code.h Loading commit data...
codecs.h Loading commit data...
compile.h Loading commit data...
complexobject.h Loading commit data...
context.h Loading commit data...
coreconfig.h Loading commit data...
datetime.h Loading commit data...
descrobject.h Loading commit data...
dictobject.h Loading commit data...
dtoa.h Loading commit data...
dynamic_annotations.h Loading commit data...
enumobject.h Loading commit data...
errcode.h Loading commit data...
eval.h Loading commit data...
fileobject.h Loading commit data...
fileutils.h Loading commit data...
floatobject.h Loading commit data...
frameobject.h Loading commit data...
funcobject.h Loading commit data...
genobject.h Loading commit data...
graminit.h Loading commit data...
grammar.h Loading commit data...
import.h Loading commit data...
intrcheck.h Loading commit data...
iterobject.h Loading commit data...
listobject.h Loading commit data...
longintrepr.h Loading commit data...
longobject.h Loading commit data...
marshal.h Loading commit data...
memoryobject.h Loading commit data...
metagrammar.h Loading commit data...
methodobject.h Loading commit data...
modsupport.h Loading commit data...
moduleobject.h Loading commit data...
namespaceobject.h Loading commit data...
node.h Loading commit data...
object.h Loading commit data...
objimpl.h Loading commit data...
odictobject.h Loading commit data...
opcode.h Loading commit data...
osdefs.h Loading commit data...
osmodule.h Loading commit data...
parsetok.h Loading commit data...
patchlevel.h Loading commit data...
pgen.h Loading commit data...
pgenheaders.h Loading commit data...
py_curses.h Loading commit data...
pyarena.h Loading commit data...
pycapsule.h Loading commit data...
pyctype.h Loading commit data...
pydebug.h Loading commit data...
pydtrace.d Loading commit data...
pydtrace.h Loading commit data...
pyerrors.h Loading commit data...
pyexpat.h Loading commit data...
pyfpe.h Loading commit data...
pyhash.h Loading commit data...
pylifecycle.h Loading commit data...
pymacconfig.h Loading commit data...
pymacro.h Loading commit data...
pymath.h Loading commit data...
pymem.h Loading commit data...
pyport.h Loading commit data...
pystate.h Loading commit data...
pystrcmp.h Loading commit data...
pystrhex.h Loading commit data...
pystrtod.h Loading commit data...
pythonrun.h Loading commit data...
pythread.h Loading commit data...
pytime.h Loading commit data...
rangeobject.h Loading commit data...
setobject.h Loading commit data...
sliceobject.h Loading commit data...
structmember.h Loading commit data...
structseq.h Loading commit data...
symtable.h Loading commit data...
sysmodule.h Loading commit data...
token.h Loading commit data...
traceback.h Loading commit data...
tracemalloc.h Loading commit data...
tupleobject.h Loading commit data...
typeslots.h Loading commit data...
ucnhash.h Loading commit data...
unicodeobject.h Loading commit data...
warnings.h Loading commit data...
weakrefobject.h Loading commit data...