Утилиты операционной системы¶
- 
PyObject *PyOS_FSPath(PyObject *path)¶
- Return value: New reference. Part of the Stable ABI since version 3.6.Возвращает представление файловой системы для path. Если объект является объектом strилиbytes, то количество ссылок на него увеличивается. Если объект реализует интерфейсos.PathLike, то возвращается__fspath__(), если это объектstrилиbytes. В противном случае вызываетсяTypeErrorи возвращаетсяNULL.Добавлено в версии 3.6. 
- 
int Py_FdIsInteractive(FILE *fp, const char *filename)¶
- Возвращает true (ненулевое значение), если файл стандартного ввода/вывода fp с именем filename считается интерактивным. Это относится к файлам, для которых - isatty(fileno(fp))является истиной. Если глобальный флаг- Py_InteractiveFlagравен true, эта функция также возвращает true, если указатель filename равен- NULLили если имя равно одной из строк- '<stdin>'или- '???'.
- 
void PyOS_BeforeFork()¶
-  Part of the Stable ABI on platforms with fork() since version 3.7.Функция для подготовки некоторого внутреннего состояния перед форком процесса. Ее следует вызывать перед вызовом fork()или любой другой подобной функции, клонирующей текущий процесс. Доступна только в системах, где определеноfork().Предупреждение Вызов C fork()должен осуществляться только из «main» thread (из «main» interpreter). То же самое справедливо и дляPyOS_BeforeFork().Добавлено в версии 3.7. 
- 
void PyOS_AfterFork_Parent()¶
-  Part of the Stable ABI on platforms with fork() since version 3.7.Функция для обновления некоторого внутреннего состояния после форка процесса. Она должна быть вызвана из родительского процесса после вызова fork()или любой подобной функции, которая клонирует текущий процесс, независимо от того, было ли клонирование процесса успешным. Доступно только в системах, где определеноfork().Предупреждение Вызов C fork()должен осуществляться только из «main» thread (из «main» interpreter). То же самое справедливо и дляPyOS_AfterFork_Parent().Добавлено в версии 3.7. 
- 
void PyOS_AfterFork_Child()¶
-  Part of the Stable ABI on platforms with fork() since version 3.7.Функция для обновления внутреннего состояния интерпретатора после форка процесса. Она должна быть вызвана из дочернего процесса после вызова fork()или любой другой подобной функции, клонирующей текущий процесс, если есть вероятность, что процесс вернется в интерпретатор Python. Доступно только в системах, где определеноfork().Предупреждение Вызов C fork()должен осуществляться только из «main» thread (из «main» interpreter). То же самое справедливо и дляPyOS_AfterFork_Child().Добавлено в версии 3.7. См.также os.register_at_fork()позволяет регистрировать пользовательские функции Python для вызоваPyOS_BeforeFork(),PyOS_AfterFork_Parent()иPyOS_AfterFork_Child().
- 
void PyOS_AfterFork()¶
-  Part of the Stable ABI on platforms with fork().Функция для обновления некоторого внутреннего состояния после форка процесса; она должна вызываться в новом процессе, если интерпретатор Python будет продолжать использоваться. Если в новый процесс загружается новый исполняемый файл, эту функцию вызывать не нужно. Не рекомендуется, начиная с версии 3.7: Эта функция заменена функцией PyOS_AfterFork_Child().
- 
int PyOS_CheckStack()¶
-  Part of the Stable ABI on platforms with USE_STACKCHECK since version 3.7.Возвращает true, если в интерпретаторе закончилось место в стеке. Это надежная проверка, но она доступна только тогда, когда определено USE_STACKCHECK(в настоящее время на Windows с использованием компилятора Microsoft Visual C++).USE_STACKCHECKбудет определено автоматически; вы никогда не должны изменять это определение в своем собственном коде.
- 
PyOS_sighandler_t PyOS_getsig(int i)¶
-  Part of the Stable ABI.Возвращает текущий обработчик сигнала для сигнала i. Это тонкая обертка вокруг sigaction()илиsignal(). Не вызывайте эти функции напрямую!PyOS_sighandler_tявляется типизированным псевдонимом для void (*)(int).
- 
PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)¶
-  Part of the Stable ABI.Установите обработчик сигнала i на h; верните старый обработчик сигнала. Это тонкая обертка вокруг sigaction()илиsignal(). Не вызывайте эти функции напрямую!PyOS_sighandler_tявляется типизированным псевдонимом для void (*)(int).
- 
wchar_t *Py_DecodeLocale(const char *arg, size_t *size)¶
-  Part of the Stable ABI since version 3.7.Предупреждение Эту функцию не следует вызывать напрямую: используйте API PyConfigс функциейPyConfig_SetBytesString(), которая гарантирует, что Python is preinitialized.Эта функция не должна вызываться раньше Python is preinitialized и для того, чтобы локаль LC_CTYPE была правильно настроена: см. функцию Py_PreInitialize().Декодируйте байтовую строку из filesystem encoding and error handler. Если обработчик ошибок surrogateescape error handler, то недекодируемые байты декодируются как символы в диапазоне U+DC80…U+DCFF; а если последовательность байтов может быть декодирована как суррогатный символ, то вместо декодирования байты экранируются с помощью обработчика ошибок surrogateescape. Верните указатель на только что выделенную широкую символьную строку, используйте PyMem_RawFree()для освобождения памяти. Если размер не равенNULL, запишите количество широких символов, исключая нулевой символ, в*size.Возвращает NULLпри ошибке декодирования или ошибке выделения памяти. Если size неNULL, то*sizeустанавливается в(size_t)-1при ошибке памяти или устанавливается в(size_t)-2при ошибке декодирования.filesystem encoding and error handler выбираются PyConfig_Read(): см.filesystem_encodingиfilesystem_errorsчленыPyConfig.Ошибки декодирования никогда не должны возникать, если только нет ошибки в библиотеке C. Используйте функцию Py_EncodeLocale()для кодирования строки символов обратно в строку байтов.См.также Функции PyUnicode_DecodeFSDefaultAndSize()иPyUnicode_DecodeLocaleAndSize().Добавлено в версии 3.5. Изменено в версии 3.7: Теперь функция использует кодировку UTF-8 в Python UTF-8 Mode. Изменено в версии 3.8: Функция теперь использует кодировку UTF-8 в Windows, если Py_LegacyWindowsFSEncodingFlagравен нулю;
- 
char *Py_EncodeLocale(const wchar_t *text, size_t *error_pos)¶
-  Part of the Stable ABI since version 3.7.Закодировать широкую символьную строку в байт filesystem encoding and error handler. Если обработчиком ошибки является surrogateescape error handler, суррогатные символы в диапазоне U+DC80…U+DCFF преобразуются в байты 0x80…0xFF. Возвращает указатель на только что выделенную байтовую строку, используйте PyMem_Free()для освобождения памяти. ВозвращаетNULLпри ошибке кодирования или ошибке выделения памяти.Если error_pos не является NULL,*error_posустанавливается в(size_t)-1при успехе, или устанавливается в индекс недопустимого символа при ошибке кодирования.filesystem encoding and error handler выбираются PyConfig_Read(): см.filesystem_encodingиfilesystem_errorsчленыPyConfig.Используйте функцию Py_DecodeLocale()для декодирования байтовой строки обратно в широкую символьную строку.Предупреждение Эта функция не должна вызываться раньше Python is preinitialized и для того, чтобы локаль LC_CTYPE была правильно настроена: см. функцию Py_PreInitialize().См.также Функции PyUnicode_EncodeFSDefault()иPyUnicode_EncodeLocale().Добавлено в версии 3.5. Изменено в версии 3.7: Теперь функция использует кодировку UTF-8 в Python UTF-8 Mode. Изменено в версии 3.8: Функция теперь использует кодировку UTF-8 в Windows, если Py_LegacyWindowsFSEncodingFlagравен нулю.
Функции системы¶
Это служебные функции, которые делают функциональность из модуля sys доступной для кода на языке Си.  Все они работают с dict модуля sys текущего потока интерпретатора, который содержится во внутренней структуре состояния потока.
- 
PyObject *PySys_GetObject(const char *name)¶
- Return value: Borrowed reference. Part of the Stable ABI.Возвращает объект name из модуля sysилиNULL, если он не существует, не устанавливая исключения.
- 
int PySys_SetObject(const char *name, PyObject *v)¶
-  Part of the Stable ABI.Устанавливает name в модуле sysна v, если только v неNULL, в этом случае name удаляется из модуля sys. Возвращает0при успехе,-1при ошибке.
- 
void PySys_ResetWarnOptions()¶
-  Part of the Stable ABI.Сбросить sys.warnoptionsв пустой список. Эта функция может быть вызвана доPy_Initialize().
- 
void PySys_AddWarnOption(const wchar_t *s)¶
-  Part of the Stable ABI.Добавить s к sys.warnoptions. Эта функция должна быть вызвана доPy_Initialize(), чтобы повлиять на список фильтров предупреждений.
- 
void PySys_AddWarnOptionUnicode(PyObject *unicode)¶
-  Part of the Stable ABI.Добавьте unicode к sys.warnoptions.Примечание: в настоящее время эта функция не может быть использована извне реализации CPython, поскольку она должна быть вызвана до неявного импорта warningsвPy_Initialize(), чтобы быть эффективной, но не может быть вызвана до тех пор, пока не будет инициализирована достаточная часть среды выполнения, позволяющая создавать объекты Unicode.
- 
void PySys_SetPath(const wchar_t *path)¶
-  Part of the Stable ABI.Установите sys.pathв объект списка путей, найденных в path, который должен представлять собой список путей, разделенных разделителем путей поиска платформы (:на Unix,;на Windows).
- 
void PySys_WriteStdout(const char *format, ...)¶
-  Part of the Stable ABI.Записать строку вывода, описанную форматом, в sys.stdout. Никаких исключений не возникает, даже если происходит усечение (см. ниже).формат должен ограничивать общий размер форматированной выходной строки до 1000 байт или меньше - после 1000 байт выходная строка усекается. В частности, это означает, что не должно быть неограниченных форматов «%s»; они должны быть ограничены с помощью «%.<N>s», где <N> - десятичное число, рассчитанное так, чтобы <N> плюс максимальный размер другого форматированного текста не превышал 1000 байт. Также следите за «%f», который может выводить сотни цифр для очень больших чисел. Если возникает проблема или sys.stdoutне установлен, отформатированное сообщение записывается в реальный (уровень C) stdout.
- 
void PySys_WriteStderr(const char *format, ...)¶
-  Part of the Stable ABI.Как PySys_WriteStdout(), но вместо него пишитеsys.stderrили stderr.
- 
void PySys_FormatStdout(const char *format, ...)¶
-  Part of the Stable ABI.Функция, аналогичная PySys_WriteStdout(), но форматирует сообщение с помощью PyUnicode_FromFormatV()и не усекает его до произвольной длины.Добавлено в версии 3.2. 
- 
void PySys_FormatStderr(const char *format, ...)¶
-  Part of the Stable ABI.Как PySys_FormatStdout(), но вместо него пишитеsys.stderrили stderr.Добавлено в версии 3.2. 
- 
void PySys_AddXOption(const wchar_t *s)¶
-  Part of the Stable ABI since version 3.7.Разбирает s как набор опций -Xи добавляет их к текущему отображению опций, возвращаемомуPySys_GetXOptions(). Эта функция может быть вызвана доPy_Initialize().Добавлено в версии 3.2. 
- 
PyObject *PySys_GetXOptions()¶
- Return value: Borrowed reference. Part of the Stable ABI since version 3.7.Возвращает текущий словарь опций -X, аналогичноsys._xoptions. При ошибке возвращаетсяNULLи устанавливается исключение.Добавлено в версии 3.2. 
- 
int PySys_Audit(const char *event, const char *format, ...)¶
- Вызвать событие аудита с любыми активными крючками. В случае успеха возвращается ноль, а в случае неудачи - ненулевое значение с установленным исключением. - Если были добавлены какие-либо крючки, формат и другие аргументы будут использованы для построения передаваемого кортежа. Кроме - N, доступны те же символы формата, которые используются в- Py_BuildValue(). Если построенное значение не является кортежем, оно будет добавлено в одноэлементный кортеж. (Опция формата- Nпотребляет ссылку, но поскольку нет способа узнать, будут ли потребляться аргументы этой функции, ее использование может привести к утечке ссылок).- Обратите внимание, что символы формата - #всегда должны рассматриваться как- Py_ssize_t, независимо от того, был ли определен- PY_SSIZE_T_CLEAN.- sys.audit()выполняет ту же функцию из кода Python.- Добавлено в версии 3.8. - Изменено в версии 3.8.2: Требуйте - Py_ssize_tдля символов формата- #. Ранее возникало неизбежное предупреждение об устаревании.
- 
int PySys_AddAuditHook(Py_AuditHookFunction hook, void *userData)¶
- Добавить вызываемый hook в список активных аудиторских крючков. Возвращает ноль при успехе и ненулевое значение при неудаче. Если среда выполнения была инициализирована, при неудаче также выдает ошибку. Крючки, добавленные через этот API, вызываются для всех интерпретаторов, созданных средой выполнения. - Указатель userData передается в функцию хука. Поскольку хук-функции могут вызываться из разных режимов выполнения, этот указатель не должен напрямую ссылаться на состояние Python. - Эту функцию безопасно вызывать до - Py_Initialize(). При вызове после инициализации во время выполнения существующие крючки аудита уведомляются и могут молча прервать операцию, подняв ошибку, подклассифицированную из- Exception(другие ошибки не будут заглушены).- Функция hook имеет тип int (*)(const char *event, PyObject *args, void *userData), где args гарантированно является - PyTupleObject. Функция hook всегда вызывается с GIL, хранящимся в интерпретаторе Python, который вызвал событие.- Подробное описание аудита см. в PEP 578. Функции в среде выполнения и стандартной библиотеке, которые вызывают события, перечислены в audit events table. Подробности приведены в документации к каждой функции. - Вызывает auditing event - sys.addaudithookбез аргументов.- Добавлено в версии 3.8. 
Управление процессами¶
- 
void Py_FatalError(const char *message)¶
-  Part of the Stable ABI.Выведите сообщение о фатальной ошибке и завершите процесс. Очистка не выполняется. Эту функцию следует вызывать только при обнаружении состояния, при котором продолжать работу с интерпретатором Python опасно; например, когда администрирование объектов оказывается поврежденным. На Unix вызывается стандартная функция библиотеки C abort(), которая попытается создать файлcore.Функция Py_FatalError()заменяется макросом, который автоматически регистрирует имя текущей функции, если не определен макросPy_LIMITED_API.Изменено в версии 3.9: Автоматически регистрируйте имя функции. 
- 
void Py_Exit(int status)¶
-  Part of the Stable ABI.Выход из текущего процесса. При этом вызывается Py_FinalizeEx(), а затем вызывается стандартная функция библиотеки Cexit(status). ЕслиPy_FinalizeEx()указывает на ошибку, статус выхода устанавливается на 120.Изменено в версии 3.6: Ошибки при финализации больше не игнорируются. 
- 
int Py_AtExit(void (*func)())¶
-  Part of the Stable ABI.Зарегистрируйте функцию очистки, которая будет вызываться Py_FinalizeEx(). Функция очистки будет вызываться без аргументов и не должна возвращать никакого значения. Можно зарегистрировать не более 32 функций очистки. При успешной регистрацииPy_AtExit()возвращает0; при неудаче возвращает-1. Функция очистки, зарегистрированная последней, вызывается первой. Каждая функция очистки будет вызвана не более одного раза. Поскольку внутренняя финализация Python будет завершена до функции очистки, никакие API Python не должны вызываться func.