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. ...@@ -1576,15 +1576,15 @@ to be ignored.
.. function:: _exit(n) .. 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. stdio buffers, etc.
Availability: Unix, Windows. Availability: Unix, Windows.
.. note:: .. note::
The standard way to exit is ``sys.exit(n)``. :func:`_exit` should normally only The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
be used in the child process after a :func:`fork`. 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`, 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 although they are not required. These are typically used for system programs
......
...@@ -180,19 +180,25 @@ always available. ...@@ -180,19 +180,25 @@ always available.
Exit from Python. This is implemented by raising the :exc:`SystemExit` Exit from Python. This is implemented by raising the :exc:`SystemExit`
exception, so cleanup actions specified by finally clauses of :keyword:`try` 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 statements are honored, and it is possible to intercept the exit attempt at
outer level. The optional argument *arg* can be an integer giving the exit an outer level.
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 The optional argument *arg* can be an integer giving the exit status
"abnormal termination" by shells and the like. Most systems require it to be in (defaulting to zero), or another type of object. If it is an integer, zero
the range 0-127, and produce undefined results otherwise. Some systems have a is considered "successful termination" and any nonzero value is considered
convention for assigning specific meanings to specific exit codes, but these are "abnormal termination" by shells and the like. Most systems require it to be
generally underdeveloped; Unix programs generally use 2 for command line syntax in the range 0-127, and produce undefined results otherwise. Some systems
errors and 1 for all other kind of errors. If another type of object is passed, have a convention for assigning specific meanings to specific exit codes, but
``None`` is equivalent to passing zero, and any other object is printed to these are generally underdeveloped; Unix programs generally use 2 for command
``sys.stderr`` and results in an exit code of 1. In particular, line syntax errors and 1 for all other kind of errors. If another type of
``sys.exit("some error message")`` is a quick way to exit a program when an object is passed, ``None`` is equivalent to passing zero, and any other
error occurs. 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 .. 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