Skip to content
6 changes: 5 additions & 1 deletion Doc/library/os.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1969,7 +1969,11 @@ can be inherited by child processes. Since Python 3.4, file descriptors
created by Python are non-inheritable by default.

On UNIX, non-inheritable file descriptors are closed in child processes at the
execution of a new program, other file descriptors are inherited.
execution of a new program (via :func:`os.execl` and related functions), but
they remain accessible after :func:`os.fork` until an exec call occurs. In other
words, a forked child process can still use the file descriptor, but it will be
closed if that child process calls exec to run a new program. Inheritable file
descriptors are inherited across both fork and exec calls.

On Windows, non-inheritable handles and file descriptors are closed in child
processes, except for standard streams (file descriptors 0, 1 and 2: stdin, stdout
Expand Down
8 changes: 6 additions & 2 deletions Doc/library/tempfile.rst
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,12 @@ The module defines the following user-callable items:
properly implements the :const:`os.O_EXCL` flag for :func:`os.open`. The
file is readable and writable only by the creating user ID. If the
platform uses permission bits to indicate whether a file is executable,
the file is executable by no one. The file descriptor is not inherited
by child processes.
the file is executable by no one.

The file descriptor is not inherited by child processes across
:func:`exec <os.execl>` calls, but will be inherited by child
processes created via :func:`os.fork`. See :ref:`fd_inheritance`
for more information.

Unlike :func:`TemporaryFile`, the user of :func:`mkstemp` is responsible
for deleting the temporary file when done with it.
Expand Down
Loading