| 
									
										
										
										
											2019-05-17 11:55:34 +02:00
										 |  |  | .. highlight:: c
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. _os:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Operating System Utilities
 | 
					
						
							|  |  |  | ==========================
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-09 16:58:38 -07:00
										 |  |  | .. c:function:: PyObject* PyOS_FSPath(PyObject *path)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Return the file system representation for *path*. If the object is a
 | 
					
						
							|  |  |  |    :class:`str` or :class:`bytes` object, then its reference count is
 | 
					
						
							|  |  |  |    incremented. If the object implements the :class:`os.PathLike` interface,
 | 
					
						
							| 
									
										
										
										
											2016-06-24 12:03:43 -07:00
										 |  |  |    then :meth:`~os.PathLike.__fspath__` is returned as long as it is a
 | 
					
						
							|  |  |  |    :class:`str` or :class:`bytes` object. Otherwise :exc:`TypeError` is raised
 | 
					
						
							|  |  |  |    and ``NULL`` is returned.
 | 
					
						
							| 
									
										
										
										
											2016-06-09 16:58:38 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |    .. versionadded:: 3.6
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: int Py_FdIsInteractive(FILE *fp, const char *filename)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Return true (nonzero) if the standard I/O file *fp* with name *filename* is
 | 
					
						
							|  |  |  |    deemed interactive.  This is the case for files for which ``isatty(fileno(fp))``
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  |    is true.  If the global flag :c:data:`Py_InteractiveFlag` is true, this function
 | 
					
						
							| 
									
										
										
										
											2019-10-30 12:03:20 +02:00
										 |  |  |    also returns true if the *filename* pointer is ``NULL`` or if the name is equal to
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  |    one of the strings ``'<stdin>'`` or ``'???'``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 17:50:54 +02:00
										 |  |  | .. c:function:: void PyOS_BeforeFork()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Function to prepare some internal state before a process fork.  This
 | 
					
						
							|  |  |  |    should be called before calling :c:func:`fork` or any similar function
 | 
					
						
							|  |  |  |    that clones the current process.
 | 
					
						
							|  |  |  |    Only available on systems where :c:func:`fork` is defined.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-15 13:28:54 -08:00
										 |  |  |    .. warning::
 | 
					
						
							|  |  |  |       The C :c:func:`fork` call should only be made from the
 | 
					
						
							|  |  |  |       :ref:`"main" thread <fork-and-threads>` (of the
 | 
					
						
							|  |  |  |       :ref:`"main" interpreter <sub-interpreter-support>`).  The same is
 | 
					
						
							|  |  |  |       true for ``PyOS_BeforeFork()``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 17:50:54 +02:00
										 |  |  |    .. versionadded:: 3.7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. c:function:: void PyOS_AfterFork_Parent()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Function to update some internal state after a process fork.  This
 | 
					
						
							|  |  |  |    should be called from the parent process after calling :c:func:`fork`
 | 
					
						
							|  |  |  |    or any similar function that clones the current process, regardless
 | 
					
						
							|  |  |  |    of whether process cloning was successful.
 | 
					
						
							|  |  |  |    Only available on systems where :c:func:`fork` is defined.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-15 13:28:54 -08:00
										 |  |  |    .. warning::
 | 
					
						
							|  |  |  |       The C :c:func:`fork` call should only be made from the
 | 
					
						
							|  |  |  |       :ref:`"main" thread <fork-and-threads>` (of the
 | 
					
						
							|  |  |  |       :ref:`"main" interpreter <sub-interpreter-support>`).  The same is
 | 
					
						
							|  |  |  |       true for ``PyOS_AfterFork_Parent()``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 17:50:54 +02:00
										 |  |  |    .. versionadded:: 3.7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. c:function:: void PyOS_AfterFork_Child()
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-29 10:03:41 -07:00
										 |  |  |    Function to update internal interpreter state after a process fork.
 | 
					
						
							|  |  |  |    This must be called from the child process after calling :c:func:`fork`,
 | 
					
						
							|  |  |  |    or any similar function that clones the current process, if there is
 | 
					
						
							|  |  |  |    any chance the process will call back into the Python interpreter.
 | 
					
						
							| 
									
										
										
										
											2017-05-27 17:50:54 +02:00
										 |  |  |    Only available on systems where :c:func:`fork` is defined.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-15 13:28:54 -08:00
										 |  |  |    .. warning::
 | 
					
						
							|  |  |  |       The C :c:func:`fork` call should only be made from the
 | 
					
						
							|  |  |  |       :ref:`"main" thread <fork-and-threads>` (of the
 | 
					
						
							|  |  |  |       :ref:`"main" interpreter <sub-interpreter-support>`).  The same is
 | 
					
						
							|  |  |  |       true for ``PyOS_AfterFork_Child()``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 17:50:54 +02:00
										 |  |  |    .. versionadded:: 3.7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. seealso::
 | 
					
						
							|  |  |  |       :func:`os.register_at_fork` allows registering custom Python functions
 | 
					
						
							|  |  |  |       to be called by :c:func:`PyOS_BeforeFork()`,
 | 
					
						
							|  |  |  |       :c:func:`PyOS_AfterFork_Parent` and  :c:func:`PyOS_AfterFork_Child`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: void PyOS_AfterFork()
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Function to update some internal state after a process fork; this should be
 | 
					
						
							|  |  |  |    called in the new process if the Python interpreter will continue to be used.
 | 
					
						
							|  |  |  |    If a new executable is loaded into the new process, this function does not need
 | 
					
						
							|  |  |  |    to be called.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 17:50:54 +02:00
										 |  |  |    .. deprecated:: 3.7
 | 
					
						
							|  |  |  |       This function is superseded by :c:func:`PyOS_AfterFork_Child()`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: int PyOS_CheckStack()
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Return true when the interpreter runs out of stack space.  This is a reliable
 | 
					
						
							|  |  |  |    check, but is only available when :const:`USE_STACKCHECK` is defined (currently
 | 
					
						
							|  |  |  |    on Windows using the Microsoft Visual C++ compiler).  :const:`USE_STACKCHECK`
 | 
					
						
							|  |  |  |    will be defined automatically; you should never change the definition in your
 | 
					
						
							|  |  |  |    own code.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: PyOS_sighandler_t PyOS_getsig(int i)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Return the current signal handler for signal *i*.  This is a thin wrapper around
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  |    either :c:func:`sigaction` or :c:func:`signal`.  Do not call those functions
 | 
					
						
							|  |  |  |    directly! :c:type:`PyOS_sighandler_t` is a typedef alias for :c:type:`void
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  |    (\*)(int)`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Set the signal handler for signal *i* to be *h*; return the old signal handler.
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  |    This is a thin wrapper around either :c:func:`sigaction` or :c:func:`signal`.  Do
 | 
					
						
							|  |  |  |    not call those functions directly!  :c:type:`PyOS_sighandler_t` is a typedef
 | 
					
						
							|  |  |  |    alias for :c:type:`void (\*)(int)`.
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-01 12:28:48 +02:00
										 |  |  | .. c:function:: wchar_t* Py_DecodeLocale(const char* arg, size_t *size)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-02 16:49:54 +01:00
										 |  |  |    .. warning::
 | 
					
						
							|  |  |  |       This function should not be called directly: use the :c:type:`PyConfig`
 | 
					
						
							|  |  |  |       API with the :c:func:`PyConfig_SetBytesString` function which ensures
 | 
					
						
							|  |  |  |       that :ref:`Python is preinitialized <c-preinit>`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       This function must not be called before :ref:`Python is preinitialized
 | 
					
						
							|  |  |  |       <c-preinit>` and so that the LC_CTYPE locale is properly configured: see
 | 
					
						
							|  |  |  |       the :c:func:`Py_PreInitialize` function.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Decode a byte string from the :term:`filesystem encoding and error handler`.
 | 
					
						
							|  |  |  |    If the error handler is :ref:`surrogateescape error handler
 | 
					
						
							|  |  |  |    <surrogateescape>`, undecodable bytes are decoded as characters in range
 | 
					
						
							|  |  |  |    U+DC80..U+DCFF; and if a byte sequence can be decoded as a surrogate
 | 
					
						
							|  |  |  |    character, the bytes are escaped using the surrogateescape error handler
 | 
					
						
							|  |  |  |    instead of decoding them.
 | 
					
						
							| 
									
										
										
										
											2018-01-15 10:45:49 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-01 12:28:48 +02:00
										 |  |  |    Return a pointer to a newly allocated wide character string, use
 | 
					
						
							|  |  |  |    :c:func:`PyMem_RawFree` to free the memory. If size is not ``NULL``, write
 | 
					
						
							|  |  |  |    the number of wide characters excluding the null character into ``*size``
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Return ``NULL`` on decoding error or memory allocation error. If *size* is
 | 
					
						
							|  |  |  |    not ``NULL``, ``*size`` is set to ``(size_t)-1`` on memory error or set to
 | 
					
						
							|  |  |  |    ``(size_t)-2`` on decoding error.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-02 16:49:54 +01:00
										 |  |  |    The :term:`filesystem encoding and error handler` are selected by
 | 
					
						
							|  |  |  |    :c:func:`PyConfig_Read`: see :c:member:`~PyConfig.filesystem_encoding` and
 | 
					
						
							|  |  |  |    :c:member:`~PyConfig.filesystem_errors` members of :c:type:`PyConfig`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-01 12:28:48 +02:00
										 |  |  |    Decoding errors should never happen, unless there is a bug in the C
 | 
					
						
							|  |  |  |    library.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Use the :c:func:`Py_EncodeLocale` function to encode the character string
 | 
					
						
							|  |  |  |    back to a byte string.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       The :c:func:`PyUnicode_DecodeFSDefaultAndSize` and
 | 
					
						
							|  |  |  |       :c:func:`PyUnicode_DecodeLocaleAndSize` functions.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. versionadded:: 3.5
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-13 12:29:09 +01:00
										 |  |  |    .. versionchanged:: 3.7
 | 
					
						
							| 
									
										
										
										
											2020-11-02 16:49:54 +01:00
										 |  |  |       The function now uses the UTF-8 encoding in the :ref:`Python UTF-8 Mode
 | 
					
						
							|  |  |  |       <utf8-mode>`.
 | 
					
						
							| 
									
										
										
										
											2017-12-13 12:29:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-29 19:32:47 +02:00
										 |  |  |    .. versionchanged:: 3.8
 | 
					
						
							|  |  |  |       The function now uses the UTF-8 encoding on Windows if
 | 
					
						
							|  |  |  |       :c:data:`Py_LegacyWindowsFSEncodingFlag` is zero;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-01 12:28:48 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. c:function:: char* Py_EncodeLocale(const wchar_t *text, size_t *error_pos)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-02 16:49:54 +01:00
										 |  |  |    Encode a wide character string to the :term:`filesystem encoding and error
 | 
					
						
							|  |  |  |    handler`. If the error handler is :ref:`surrogateescape error handler
 | 
					
						
							|  |  |  |    <surrogateescape>`, surrogate characters in the range U+DC80..U+DCFF are
 | 
					
						
							|  |  |  |    converted to bytes 0x80..0xFF.
 | 
					
						
							| 
									
										
										
										
											2018-01-15 10:45:49 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-01 12:28:48 +02:00
										 |  |  |    Return a pointer to a newly allocated byte string, use :c:func:`PyMem_Free`
 | 
					
						
							|  |  |  |    to free the memory. Return ``NULL`` on encoding error or memory allocation
 | 
					
						
							|  |  |  |    error
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-13 12:29:09 +01:00
										 |  |  |    If error_pos is not ``NULL``, ``*error_pos`` is set to ``(size_t)-1`` on
 | 
					
						
							|  |  |  |    success,  or set to the index of the invalid character on encoding error.
 | 
					
						
							| 
									
										
										
										
											2014-08-01 12:28:48 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-02 16:49:54 +01:00
										 |  |  |    The :term:`filesystem encoding and error handler` are selected by
 | 
					
						
							|  |  |  |    :c:func:`PyConfig_Read`: see :c:member:`~PyConfig.filesystem_encoding` and
 | 
					
						
							|  |  |  |    :c:member:`~PyConfig.filesystem_errors` members of :c:type:`PyConfig`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-01 12:28:48 +02:00
										 |  |  |    Use the :c:func:`Py_DecodeLocale` function to decode the bytes string back
 | 
					
						
							|  |  |  |    to a wide character string.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-02 16:49:54 +01:00
										 |  |  |    .. warning::
 | 
					
						
							|  |  |  |       This function must not be called before :ref:`Python is preinitialized
 | 
					
						
							|  |  |  |       <c-preinit>` and so that the LC_CTYPE locale is properly configured: see
 | 
					
						
							|  |  |  |       the :c:func:`Py_PreInitialize` function.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-01 12:28:48 +02:00
										 |  |  |    .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       The :c:func:`PyUnicode_EncodeFSDefault` and
 | 
					
						
							|  |  |  |       :c:func:`PyUnicode_EncodeLocale` functions.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. versionadded:: 3.5
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-13 12:29:09 +01:00
										 |  |  |    .. versionchanged:: 3.7
 | 
					
						
							| 
									
										
										
										
											2020-11-02 16:49:54 +01:00
										 |  |  |       The function now uses the UTF-8 encoding in the :ref:`Python UTF-8 Mode
 | 
					
						
							|  |  |  |       <utf8-mode>`.
 | 
					
						
							| 
									
										
										
										
											2018-08-29 19:32:47 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |    .. versionchanged:: 3.8
 | 
					
						
							|  |  |  |       The function now uses the UTF-8 encoding on Windows if
 | 
					
						
							|  |  |  |       :c:data:`Py_LegacyWindowsFSEncodingFlag` is zero;
 | 
					
						
							| 
									
										
										
										
											2017-12-13 12:29:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-01 12:28:48 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | .. _systemfunctions:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | System Functions
 | 
					
						
							|  |  |  | ================
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | These are utility functions that make functionality from the :mod:`sys` module
 | 
					
						
							|  |  |  | accessible to C code.  They all work with the current interpreter thread's
 | 
					
						
							|  |  |  | :mod:`sys` module's dict, which is contained in the internal thread state structure.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-21 17:11:21 +03:00
										 |  |  | .. c:function:: PyObject *PySys_GetObject(const char *name)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-30 12:03:20 +02:00
										 |  |  |    Return the object *name* from the :mod:`sys` module or ``NULL`` if it does
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  |    not exist, without setting an exception.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-21 17:11:21 +03:00
										 |  |  | .. c:function:: int PySys_SetObject(const char *name, PyObject *v)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-30 12:03:20 +02:00
										 |  |  |    Set *name* in the :mod:`sys` module to *v* unless *v* is ``NULL``, in which
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  |    case *name* is deleted from the sys module. Returns ``0`` on success, ``-1``
 | 
					
						
							|  |  |  |    on error.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: void PySys_ResetWarnOptions()
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 20:44:30 +10:00
										 |  |  |    Reset :data:`sys.warnoptions` to an empty list. This function may be
 | 
					
						
							|  |  |  |    called prior to :c:func:`Py_Initialize`.
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 10:01:03 +03:00
										 |  |  | .. c:function:: void PySys_AddWarnOption(const wchar_t *s)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-12 23:59:25 +02:00
										 |  |  |    This API is kept for backward compatibility: setting
 | 
					
						
							|  |  |  |    :c:member:`PyConfig.warnoptions` should be used instead, see :ref:`Python
 | 
					
						
							|  |  |  |    Initialization Configuration <init-config>`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 20:44:30 +10:00
										 |  |  |    Append *s* to :data:`sys.warnoptions`. This function must be called prior
 | 
					
						
							|  |  |  |    to :c:func:`Py_Initialize` in order to affect the warnings filter list.
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-12 23:59:25 +02:00
										 |  |  |    .. deprecated:: 3.11
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: void PySys_AddWarnOptionUnicode(PyObject *unicode)
 | 
					
						
							| 
									
										
										
										
											2010-05-19 16:53:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-12 23:59:25 +02:00
										 |  |  |    This API is kept for backward compatibility: setting
 | 
					
						
							|  |  |  |    :c:member:`PyConfig.warnoptions` should be used instead, see :ref:`Python
 | 
					
						
							|  |  |  |    Initialization Configuration <init-config>`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-19 16:53:30 +00:00
										 |  |  |    Append *unicode* to :data:`sys.warnoptions`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 20:44:30 +10:00
										 |  |  |    Note: this function is not currently usable from outside the CPython
 | 
					
						
							|  |  |  |    implementation, as it must be called prior to the implicit import of
 | 
					
						
							|  |  |  |    :mod:`warnings` in :c:func:`Py_Initialize` to be effective, but can't be
 | 
					
						
							|  |  |  |    called until enough of the runtime has been initialized to permit the
 | 
					
						
							|  |  |  |    creation of Unicode objects.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-12 23:59:25 +02:00
										 |  |  |    .. deprecated:: 3.11
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 10:01:03 +03:00
										 |  |  | .. c:function:: void PySys_SetPath(const wchar_t *path)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Set :data:`sys.path` to a list object of paths found in *path* which should
 | 
					
						
							|  |  |  |    be a list of paths separated with the platform's search path delimiter
 | 
					
						
							|  |  |  |    (``:`` on Unix, ``;`` on Windows).
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: void PySys_WriteStdout(const char *format, ...)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Write the output string described by *format* to :data:`sys.stdout`.  No
 | 
					
						
							|  |  |  |    exceptions are raised, even if truncation occurs (see below).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    *format* should limit the total size of the formatted output string to
 | 
					
						
							|  |  |  |    1000 bytes or less -- after 1000 bytes, the output string is truncated.
 | 
					
						
							|  |  |  |    In particular, this means that no unrestricted "%s" formats should occur;
 | 
					
						
							|  |  |  |    these should be limited using "%.<N>s" where <N> is a decimal number
 | 
					
						
							|  |  |  |    calculated so that <N> plus the maximum size of other formatted text does not
 | 
					
						
							|  |  |  |    exceed 1000 bytes.  Also watch out for "%f", which can print hundreds of
 | 
					
						
							|  |  |  |    digits for very large numbers.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    If a problem occurs, or :data:`sys.stdout` is unset, the formatted message
 | 
					
						
							|  |  |  |    is written to the real (C level) *stdout*.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: void PySys_WriteStderr(const char *format, ...)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  |    As :c:func:`PySys_WriteStdout`, but write to :data:`sys.stderr` or *stderr*
 | 
					
						
							| 
									
										
										
										
											2010-08-16 17:36:42 +00:00
										 |  |  |    instead.
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: void PySys_FormatStdout(const char *format, ...)
 | 
					
						
							| 
									
										
										
										
											2010-08-16 17:36:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Function similar to PySys_WriteStdout() but format the message using
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  |    :c:func:`PyUnicode_FromFormatV` and don't truncate the message to an
 | 
					
						
							| 
									
										
										
										
											2010-08-16 17:36:42 +00:00
										 |  |  |    arbitrary length.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-16 18:39:49 +00:00
										 |  |  |    .. versionadded:: 3.2
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: void PySys_FormatStderr(const char *format, ...)
 | 
					
						
							| 
									
										
										
										
											2010-08-16 17:36:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  |    As :c:func:`PySys_FormatStdout`, but write to :data:`sys.stderr` or *stderr*
 | 
					
						
							| 
									
										
										
										
											2010-08-16 17:36:42 +00:00
										 |  |  |    instead.
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-16 18:39:49 +00:00
										 |  |  |    .. versionadded:: 3.2
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-21 13:42:28 +00:00
										 |  |  | .. c:function:: void PySys_AddXOption(const wchar_t *s)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-12 23:59:25 +02:00
										 |  |  |    This API is kept for backward compatibility: setting
 | 
					
						
							|  |  |  |    :c:member:`PyConfig.xoptions` should be used instead, see :ref:`Python
 | 
					
						
							|  |  |  |    Initialization Configuration <init-config>`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-21 13:42:28 +00:00
										 |  |  |    Parse *s* as a set of :option:`-X` options and add them to the current
 | 
					
						
							| 
									
										
										
										
											2018-03-25 20:44:30 +10:00
										 |  |  |    options mapping as returned by :c:func:`PySys_GetXOptions`. This function
 | 
					
						
							|  |  |  |    may be called prior to :c:func:`Py_Initialize`.
 | 
					
						
							| 
									
										
										
										
											2010-10-21 13:42:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    .. versionadded:: 3.2
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-12 23:59:25 +02:00
										 |  |  |    .. deprecated:: 3.11
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-21 13:42:28 +00:00
										 |  |  | .. c:function:: PyObject *PySys_GetXOptions()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Return the current dictionary of :option:`-X` options, similarly to
 | 
					
						
							| 
									
										
										
										
											2019-10-30 12:03:20 +02:00
										 |  |  |    :data:`sys._xoptions`.  On error, ``NULL`` is returned and an exception is
 | 
					
						
							| 
									
										
										
										
											2010-10-21 13:42:28 +00:00
										 |  |  |    set.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. versionadded:: 3.2
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-17 15:07:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-23 08:45:22 -07:00
										 |  |  | .. c:function:: int PySys_Audit(const char *event, const char *format, ...)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-26 12:07:48 -05:00
										 |  |  |    Raise an auditing event with any active hooks. Return zero for success
 | 
					
						
							| 
									
										
										
										
											2019-05-23 08:45:22 -07:00
										 |  |  |    and non-zero with an exception set on failure.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    If any hooks have been added, *format* and other arguments will be used
 | 
					
						
							|  |  |  |    to construct a tuple to pass. Apart from ``N``, the same format characters
 | 
					
						
							|  |  |  |    as used in :c:func:`Py_BuildValue` are available. If the built value is not
 | 
					
						
							|  |  |  |    a tuple, it will be added into a single-element tuple. (The ``N`` format
 | 
					
						
							|  |  |  |    option consumes a reference, but since there is no way to know whether
 | 
					
						
							|  |  |  |    arguments to this function will be consumed, using it may cause reference
 | 
					
						
							|  |  |  |    leaks.)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-09 11:05:39 -08:00
										 |  |  |    Note that ``#`` format characters should always be treated as
 | 
					
						
							|  |  |  |    ``Py_ssize_t``, regardless of whether ``PY_SSIZE_T_CLEAN`` was defined.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-23 08:45:22 -07:00
										 |  |  |    :func:`sys.audit` performs the same function from Python code.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. versionadded:: 3.8
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-09 11:05:39 -08:00
										 |  |  |    .. versionchanged:: 3.8.2
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       Require ``Py_ssize_t`` for ``#`` format characters. Previously, an
 | 
					
						
							|  |  |  |       unavoidable deprecation warning was raised.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-23 08:45:22 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. c:function:: int PySys_AddAuditHook(Py_AuditHookFunction hook, void *userData)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-26 12:07:48 -05:00
										 |  |  |    Append the callable *hook* to the list of active auditing hooks.
 | 
					
						
							|  |  |  |    Return zero for success
 | 
					
						
							|  |  |  |    and non-zero on failure. If the runtime has been initialized, also set an
 | 
					
						
							| 
									
										
										
										
											2019-05-23 08:45:22 -07:00
										 |  |  |    error on failure. Hooks added through this API are called for all
 | 
					
						
							|  |  |  |    interpreters created by the runtime.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-26 12:07:48 -05:00
										 |  |  |    The *userData* pointer is passed into the hook function. Since hook
 | 
					
						
							|  |  |  |    functions may be called from different runtimes, this pointer should not
 | 
					
						
							|  |  |  |    refer directly to Python state.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-23 08:45:22 -07:00
										 |  |  |    This function is safe to call before :c:func:`Py_Initialize`. When called
 | 
					
						
							|  |  |  |    after runtime initialization, existing audit hooks are notified and may
 | 
					
						
							|  |  |  |    silently abort the operation by raising an error subclassed from
 | 
					
						
							|  |  |  |    :class:`Exception` (other errors will not be silenced).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The hook function is of type :c:type:`int (*)(const char *event, PyObject
 | 
					
						
							|  |  |  |    *args, void *userData)`, where *args* is guaranteed to be a
 | 
					
						
							|  |  |  |    :c:type:`PyTupleObject`. The hook function is always called with the GIL
 | 
					
						
							|  |  |  |    held by the Python interpreter that raised the event.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-26 12:07:48 -05:00
										 |  |  |    See :pep:`578` for a detailed description of auditing.  Functions in the
 | 
					
						
							|  |  |  |    runtime and standard library that raise events are listed in the
 | 
					
						
							|  |  |  |    :ref:`audit events table <audit-events>`.
 | 
					
						
							|  |  |  |    Details are in each function's documentation.
 | 
					
						
							| 
									
										
										
										
											2019-10-26 13:02:30 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |    .. audit-event:: sys.addaudithook "" c.PySys_AddAuditHook
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       If the interpreter is initialized, this function raises a auditing event
 | 
					
						
							|  |  |  |       ``sys.addaudithook`` with no arguments. If any existing hooks raise an
 | 
					
						
							|  |  |  |       exception derived from :class:`Exception`, the new hook will not be
 | 
					
						
							|  |  |  |       added and the exception is cleared. As a result, callers cannot assume
 | 
					
						
							|  |  |  |       that their hook has been added unless they control all existing hooks.
 | 
					
						
							| 
									
										
										
										
											2019-05-23 08:45:22 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |    .. versionadded:: 3.8
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | .. _processcontrol:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Process Control
 | 
					
						
							|  |  |  | ===============
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: void Py_FatalError(const char *message)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    .. index:: single: abort()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Print a fatal error message and kill the process.  No cleanup is performed.
 | 
					
						
							|  |  |  |    This function should only be invoked when a condition is detected that would
 | 
					
						
							|  |  |  |    make it dangerous to continue using the Python interpreter; e.g., when the
 | 
					
						
							|  |  |  |    object administration appears to be corrupted.  On Unix, the standard C library
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  |    function :c:func:`abort` is called which will attempt to produce a :file:`core`
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  |    file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-07 00:54:20 +01:00
										 |  |  |    The ``Py_FatalError()`` function is replaced with a macro which logs
 | 
					
						
							|  |  |  |    automatically the name of the current function, unless the
 | 
					
						
							|  |  |  |    ``Py_LIMITED_API`` macro is defined.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. versionchanged:: 3.9
 | 
					
						
							|  |  |  |       Log the function name automatically.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: void Py_Exit(int status)
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    .. index::
 | 
					
						
							| 
									
										
										
										
											2015-11-30 03:18:29 +00:00
										 |  |  |       single: Py_FinalizeEx()
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  |       single: exit()
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-30 03:18:29 +00:00
										 |  |  |    Exit the current process.  This calls :c:func:`Py_FinalizeEx` and then calls the
 | 
					
						
							|  |  |  |    standard C library function ``exit(status)``.  If :c:func:`Py_FinalizeEx`
 | 
					
						
							|  |  |  |    indicates an error, the exit status is set to 120.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. versionchanged:: 3.6
 | 
					
						
							|  |  |  |       Errors from finalization no longer ignored.
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | .. c:function:: int Py_AtExit(void (*func) ())
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    .. index::
 | 
					
						
							| 
									
										
										
										
											2015-11-30 03:18:29 +00:00
										 |  |  |       single: Py_FinalizeEx()
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  |       single: cleanup functions
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-30 03:18:29 +00:00
										 |  |  |    Register a cleanup function to be called by :c:func:`Py_FinalizeEx`.  The cleanup
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  |    function will be called with no arguments and should return no value.  At most
 | 
					
						
							|  |  |  |    32 cleanup functions can be registered.  When the registration is successful,
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  |    :c:func:`Py_AtExit` returns ``0``; on failure, it returns ``-1``.  The cleanup
 | 
					
						
							| 
									
										
										
										
											2008-01-20 09:30:57 +00:00
										 |  |  |    function registered last is called first. Each cleanup function will be called
 | 
					
						
							|  |  |  |    at most once.  Since Python's internal finalization will have completed before
 | 
					
						
							|  |  |  |    the cleanup function, no Python APIs should be called by *func*.
 |