blob: 035cdc16824886e78641514ba14008118592b733 [file] [log] [blame]
Georg Brandl54a3faa2008-01-20 09:30:57 +00001.. highlightlang:: c
2
3.. _os:
4
5Operating System Utilities
6==========================
7
Brett Cannon746102b2016-06-09 16:58:38 -07008.. c:function:: PyObject* PyOS_FSPath(PyObject *path)
9
10 Return the file system representation for *path*. If the object is a
11 :class:`str` or :class:`bytes` object, then its reference count is
12 incremented. If the object implements the :class:`os.PathLike` interface,
Brett Cannonc78ca1e2016-06-24 12:03:43 -070013 then :meth:`~os.PathLike.__fspath__` is returned as long as it is a
14 :class:`str` or :class:`bytes` object. Otherwise :exc:`TypeError` is raised
15 and ``NULL`` is returned.
Brett Cannon746102b2016-06-09 16:58:38 -070016
17 .. versionadded:: 3.6
18
Georg Brandl54a3faa2008-01-20 09:30:57 +000019
Georg Brandl60203b42010-10-06 10:11:56 +000020.. c:function:: int Py_FdIsInteractive(FILE *fp, const char *filename)
Georg Brandl54a3faa2008-01-20 09:30:57 +000021
22 Return true (nonzero) if the standard I/O file *fp* with name *filename* is
23 deemed interactive. This is the case for files for which ``isatty(fileno(fp))``
Georg Brandl60203b42010-10-06 10:11:56 +000024 is true. If the global flag :c:data:`Py_InteractiveFlag` is true, this function
Georg Brandl54a3faa2008-01-20 09:30:57 +000025 also returns true if the *filename* pointer is *NULL* or if the name is equal to
26 one of the strings ``'<stdin>'`` or ``'???'``.
27
28
Georg Brandl60203b42010-10-06 10:11:56 +000029.. c:function:: void PyOS_AfterFork()
Georg Brandl54a3faa2008-01-20 09:30:57 +000030
31 Function to update some internal state after a process fork; this should be
32 called in the new process if the Python interpreter will continue to be used.
33 If a new executable is loaded into the new process, this function does not need
34 to be called.
35
36
Georg Brandl60203b42010-10-06 10:11:56 +000037.. c:function:: int PyOS_CheckStack()
Georg Brandl54a3faa2008-01-20 09:30:57 +000038
39 Return true when the interpreter runs out of stack space. This is a reliable
40 check, but is only available when :const:`USE_STACKCHECK` is defined (currently
41 on Windows using the Microsoft Visual C++ compiler). :const:`USE_STACKCHECK`
42 will be defined automatically; you should never change the definition in your
43 own code.
44
45
Georg Brandl60203b42010-10-06 10:11:56 +000046.. c:function:: PyOS_sighandler_t PyOS_getsig(int i)
Georg Brandl54a3faa2008-01-20 09:30:57 +000047
48 Return the current signal handler for signal *i*. This is a thin wrapper around
Georg Brandl60203b42010-10-06 10:11:56 +000049 either :c:func:`sigaction` or :c:func:`signal`. Do not call those functions
50 directly! :c:type:`PyOS_sighandler_t` is a typedef alias for :c:type:`void
Georg Brandl54a3faa2008-01-20 09:30:57 +000051 (\*)(int)`.
52
53
Georg Brandl60203b42010-10-06 10:11:56 +000054.. c:function:: PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)
Georg Brandl54a3faa2008-01-20 09:30:57 +000055
56 Set the signal handler for signal *i* to be *h*; return the old signal handler.
Georg Brandl60203b42010-10-06 10:11:56 +000057 This is a thin wrapper around either :c:func:`sigaction` or :c:func:`signal`. Do
58 not call those functions directly! :c:type:`PyOS_sighandler_t` is a typedef
59 alias for :c:type:`void (\*)(int)`.
Georg Brandl54a3faa2008-01-20 09:30:57 +000060
Victor Stinnerf6a271a2014-08-01 12:28:48 +020061.. c:function:: wchar_t* Py_DecodeLocale(const char* arg, size_t *size)
62
63 Decode a byte string from the locale encoding with the :ref:`surrogateescape
64 error handler <surrogateescape>`: undecodable bytes are decoded as
65 characters in range U+DC80..U+DCFF. If a byte sequence can be decoded as a
66 surrogate character, escape the bytes using the surrogateescape error
67 handler instead of decoding them.
68
69 Return a pointer to a newly allocated wide character string, use
70 :c:func:`PyMem_RawFree` to free the memory. If size is not ``NULL``, write
71 the number of wide characters excluding the null character into ``*size``
72
73 Return ``NULL`` on decoding error or memory allocation error. If *size* is
74 not ``NULL``, ``*size`` is set to ``(size_t)-1`` on memory error or set to
75 ``(size_t)-2`` on decoding error.
76
77 Decoding errors should never happen, unless there is a bug in the C
78 library.
79
80 Use the :c:func:`Py_EncodeLocale` function to encode the character string
81 back to a byte string.
82
83 .. seealso::
84
85 The :c:func:`PyUnicode_DecodeFSDefaultAndSize` and
86 :c:func:`PyUnicode_DecodeLocaleAndSize` functions.
87
88 .. versionadded:: 3.5
89
90
91.. c:function:: char* Py_EncodeLocale(const wchar_t *text, size_t *error_pos)
92
93 Encode a wide character string to the locale encoding with the
94 :ref:`surrogateescape error handler <surrogateescape>`: surrogate characters
95 in the range U+DC80..U+DCFF are converted to bytes 0x80..0xFF.
96
97 Return a pointer to a newly allocated byte string, use :c:func:`PyMem_Free`
98 to free the memory. Return ``NULL`` on encoding error or memory allocation
99 error
100
101 If error_pos is not ``NULL``, ``*error_pos`` is set to the index of the
102 invalid character on encoding error, or set to ``(size_t)-1`` otherwise.
103
104 Use the :c:func:`Py_DecodeLocale` function to decode the bytes string back
105 to a wide character string.
106
107 .. seealso::
108
109 The :c:func:`PyUnicode_EncodeFSDefault` and
110 :c:func:`PyUnicode_EncodeLocale` functions.
111
112 .. versionadded:: 3.5
113
114
Georg Brandl54a3faa2008-01-20 09:30:57 +0000115.. _systemfunctions:
116
117System Functions
118================
119
120These are utility functions that make functionality from the :mod:`sys` module
121accessible to C code. They all work with the current interpreter thread's
122:mod:`sys` module's dict, which is contained in the internal thread state structure.
123
Serhiy Storchaka03863d22015-06-21 17:11:21 +0300124.. c:function:: PyObject *PySys_GetObject(const char *name)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000125
126 Return the object *name* from the :mod:`sys` module or *NULL* if it does
127 not exist, without setting an exception.
128
Serhiy Storchaka03863d22015-06-21 17:11:21 +0300129.. c:function:: int PySys_SetObject(const char *name, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000130
131 Set *name* in the :mod:`sys` module to *v* unless *v* is *NULL*, in which
132 case *name* is deleted from the sys module. Returns ``0`` on success, ``-1``
133 on error.
134
Georg Brandl60203b42010-10-06 10:11:56 +0000135.. c:function:: void PySys_ResetWarnOptions()
Georg Brandl54a3faa2008-01-20 09:30:57 +0000136
137 Reset :data:`sys.warnoptions` to an empty list.
138
Georg Brandl60203b42010-10-06 10:11:56 +0000139.. c:function:: void PySys_AddWarnOption(wchar_t *s)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000140
141 Append *s* to :data:`sys.warnoptions`.
142
Georg Brandl60203b42010-10-06 10:11:56 +0000143.. c:function:: void PySys_AddWarnOptionUnicode(PyObject *unicode)
Victor Stinner9ca9c252010-05-19 16:53:30 +0000144
145 Append *unicode* to :data:`sys.warnoptions`.
146
Georg Brandl60203b42010-10-06 10:11:56 +0000147.. c:function:: void PySys_SetPath(wchar_t *path)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000148
149 Set :data:`sys.path` to a list object of paths found in *path* which should
150 be a list of paths separated with the platform's search path delimiter
151 (``:`` on Unix, ``;`` on Windows).
152
Georg Brandl60203b42010-10-06 10:11:56 +0000153.. c:function:: void PySys_WriteStdout(const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000154
155 Write the output string described by *format* to :data:`sys.stdout`. No
156 exceptions are raised, even if truncation occurs (see below).
157
158 *format* should limit the total size of the formatted output string to
159 1000 bytes or less -- after 1000 bytes, the output string is truncated.
160 In particular, this means that no unrestricted "%s" formats should occur;
161 these should be limited using "%.<N>s" where <N> is a decimal number
162 calculated so that <N> plus the maximum size of other formatted text does not
163 exceed 1000 bytes. Also watch out for "%f", which can print hundreds of
164 digits for very large numbers.
165
166 If a problem occurs, or :data:`sys.stdout` is unset, the formatted message
167 is written to the real (C level) *stdout*.
168
Georg Brandl60203b42010-10-06 10:11:56 +0000169.. c:function:: void PySys_WriteStderr(const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000170
Georg Brandl60203b42010-10-06 10:11:56 +0000171 As :c:func:`PySys_WriteStdout`, but write to :data:`sys.stderr` or *stderr*
Victor Stinner79766632010-08-16 17:36:42 +0000172 instead.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000173
Georg Brandl60203b42010-10-06 10:11:56 +0000174.. c:function:: void PySys_FormatStdout(const char *format, ...)
Victor Stinner79766632010-08-16 17:36:42 +0000175
176 Function similar to PySys_WriteStdout() but format the message using
Georg Brandl60203b42010-10-06 10:11:56 +0000177 :c:func:`PyUnicode_FromFormatV` and don't truncate the message to an
Victor Stinner79766632010-08-16 17:36:42 +0000178 arbitrary length.
179
Victor Stinnerad5b1df2010-08-16 18:39:49 +0000180 .. versionadded:: 3.2
181
Georg Brandl60203b42010-10-06 10:11:56 +0000182.. c:function:: void PySys_FormatStderr(const char *format, ...)
Victor Stinner79766632010-08-16 17:36:42 +0000183
Georg Brandl60203b42010-10-06 10:11:56 +0000184 As :c:func:`PySys_FormatStdout`, but write to :data:`sys.stderr` or *stderr*
Victor Stinner79766632010-08-16 17:36:42 +0000185 instead.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000186
Victor Stinnerad5b1df2010-08-16 18:39:49 +0000187 .. versionadded:: 3.2
188
Antoine Pitrou9583cac2010-10-21 13:42:28 +0000189.. c:function:: void PySys_AddXOption(const wchar_t *s)
190
191 Parse *s* as a set of :option:`-X` options and add them to the current
192 options mapping as returned by :c:func:`PySys_GetXOptions`.
193
194 .. versionadded:: 3.2
195
196.. c:function:: PyObject *PySys_GetXOptions()
197
198 Return the current dictionary of :option:`-X` options, similarly to
199 :data:`sys._xoptions`. On error, *NULL* is returned and an exception is
200 set.
201
202 .. versionadded:: 3.2
203
Georg Brandl67b21b72010-08-17 15:07:14 +0000204
Georg Brandl54a3faa2008-01-20 09:30:57 +0000205.. _processcontrol:
206
207Process Control
208===============
209
210
Georg Brandl60203b42010-10-06 10:11:56 +0000211.. c:function:: void Py_FatalError(const char *message)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000212
213 .. index:: single: abort()
214
215 Print a fatal error message and kill the process. No cleanup is performed.
216 This function should only be invoked when a condition is detected that would
217 make it dangerous to continue using the Python interpreter; e.g., when the
218 object administration appears to be corrupted. On Unix, the standard C library
Georg Brandl60203b42010-10-06 10:11:56 +0000219 function :c:func:`abort` is called which will attempt to produce a :file:`core`
Georg Brandl54a3faa2008-01-20 09:30:57 +0000220 file.
221
222
Georg Brandl60203b42010-10-06 10:11:56 +0000223.. c:function:: void Py_Exit(int status)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000224
225 .. index::
Martin Panterb4ce1fc2015-11-30 03:18:29 +0000226 single: Py_FinalizeEx()
Georg Brandl54a3faa2008-01-20 09:30:57 +0000227 single: exit()
228
Martin Panterb4ce1fc2015-11-30 03:18:29 +0000229 Exit the current process. This calls :c:func:`Py_FinalizeEx` and then calls the
230 standard C library function ``exit(status)``. If :c:func:`Py_FinalizeEx`
231 indicates an error, the exit status is set to 120.
232
233 .. versionchanged:: 3.6
234 Errors from finalization no longer ignored.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000235
236
Georg Brandl60203b42010-10-06 10:11:56 +0000237.. c:function:: int Py_AtExit(void (*func) ())
Georg Brandl54a3faa2008-01-20 09:30:57 +0000238
239 .. index::
Martin Panterb4ce1fc2015-11-30 03:18:29 +0000240 single: Py_FinalizeEx()
Georg Brandl54a3faa2008-01-20 09:30:57 +0000241 single: cleanup functions
242
Martin Panterb4ce1fc2015-11-30 03:18:29 +0000243 Register a cleanup function to be called by :c:func:`Py_FinalizeEx`. The cleanup
Georg Brandl54a3faa2008-01-20 09:30:57 +0000244 function will be called with no arguments and should return no value. At most
245 32 cleanup functions can be registered. When the registration is successful,
Georg Brandl60203b42010-10-06 10:11:56 +0000246 :c:func:`Py_AtExit` returns ``0``; on failure, it returns ``-1``. The cleanup
Georg Brandl54a3faa2008-01-20 09:30:57 +0000247 function registered last is called first. Each cleanup function will be called
248 at most once. Since Python's internal finalization will have completed before
249 the cleanup function, no Python APIs should be called by *func*.