diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -225,24 +225,25 @@ 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. + an outer level. When called from a thread other than the main thread, this + is equivalent to calling :func:`thread.exit` and causes the thread to exit + silently. 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. + (defaulting to zero), or another type of object. Passing ``None`` is + equivalent to passing zero. Any other object is printed to :data:`stderr` + and results in an exit status of 1. In particular, + ``sys.exit("some error message")`` is a quick way to exit a program when an + error occurs. When called from a thread other than the main thread, nothing + is printed and the argument is ignored. - 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. + An exit status of zero is considered “successful termination” and any + nonzero status 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. .. data:: exitfunc