Commit 6f4e68d8 authored by Georg Brandl's avatar Georg Brandl

#5962: clarify sys.exit() vs. threads.

parent a192828e
......@@ -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
......
......@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment