From 6f4e68d82c2009c2a297f25a8a4896f0d1a8e66d Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 17 Oct 2010 10:51:45 +0000 Subject: #5962: clarify sys.exit() vs. threads. --- Doc/library/os.rst | 6 +++--- Doc/library/sys.rst | 32 +++++++++++++++++++------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/Doc/library/os.rst b/Doc/library/os.rst index c8e5b96..cb9d9c4 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1576,15 +1576,15 @@ to be ignored. .. function:: _exit(n) - Exit to the system with status *n*, without calling cleanup handlers, flushing + Exit the process with status *n*, without calling cleanup handlers, flushing stdio buffers, etc. Availability: Unix, Windows. .. note:: - The standard way to exit is ``sys.exit(n)``. :func:`_exit` should normally only - be used in the child process after a :func:`fork`. + The standard way to exit is ``sys.exit(n)``. :func:`_exit` should + normally only be used in the child process after a :func:`fork`. The following exit codes are defined and can be used with :func:`_exit`, although they are not required. These are typically used for system programs diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index 7b44c86..6540311 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -180,19 +180,25 @@ always available. Exit from Python. This is implemented by raising the :exc:`SystemExit` exception, so cleanup actions specified by finally clauses of :keyword:`try` - statements are honored, and it is possible to intercept the exit attempt at an - outer level. The optional argument *arg* can be an integer giving the exit - status (defaulting to zero), or another type of object. If it is an integer, - zero is considered "successful termination" and any nonzero value is considered - "abnormal termination" by shells and the like. Most systems require it to be in - the range 0-127, and produce undefined results otherwise. Some systems have a - convention for assigning specific meanings to specific exit codes, but these are - generally underdeveloped; Unix programs generally use 2 for command line syntax - errors and 1 for all other kind of errors. If another type of object is passed, - ``None`` is equivalent to passing zero, and any other object is printed to - ``sys.stderr`` and results in an exit code of 1. In particular, - ``sys.exit("some error message")`` is a quick way to exit a program when an - error occurs. + statements are honored, and it is possible to intercept the exit attempt at + an outer level. + + The optional argument *arg* can be an integer giving the exit status + (defaulting to zero), or another type of object. If it is an integer, zero + is considered "successful termination" and any nonzero value is considered + "abnormal termination" by shells and the like. Most systems require it to be + in the range 0-127, and produce undefined results otherwise. Some systems + have a convention for assigning specific meanings to specific exit codes, but + these are generally underdeveloped; Unix programs generally use 2 for command + line syntax errors and 1 for all other kind of errors. If another type of + object is passed, ``None`` is equivalent to passing zero, and any other + object is printed to :data:`stderr` and results in an exit code of 1. In + particular, ``sys.exit("some error message")`` is a quick way to exit a + program when an error occurs. + + Since :func:`exit` ultimately "only" raises an exception, it will only exit + the process when called from the main thread, and the exception is not + intercepted. .. data:: flags -- cgit v0.12