Утилиты операционной системы¶Operating System Utilities
-
int
Py_FdIsInteractive(FILE *fp, const char *filename)¶ Возвращает true (ненулевое значение), если стандартный файл ввода-вывода fp с именем filename считается интерактивным. Это верно для файлов, для которых
isatty(fileno(fp))истинно. Если глобальный флагPy_InteractiveFlagистинен, эта функция также возвращает true, если указатель filename равен NULL или если имя совпадает с одной из строк'<stdin>'или'???'.
-
void
PyOS_AfterFork()¶ Функция для обновления некоторого внутреннего состояния после ветвления процесса; её следует вызвать в новом процессе, если интерпретатор Python будет продолжать использоваться. Если в новый процесс загружается новый исполняемый файл, эту функцию вызывать не нужно.
-
int
PyOS_CheckStack()¶ Возвращает истину, когда интерпретатору не хватает места в стеке. Это надёжная проверка, но доступна только при определении
USE_STACKCHECK(в настоящее время в Windows с использованием компилятора Microsoft Visual C++).USE_STACKCHECKбудет определён автоматически; никогда не следует изменять это определение в своём коде.
-
PyOS_sighandler_t
PyOS_getsig(int i)¶ Возвращает текущий обработчик сигнала для сигнала i. Это тонкая обёртка вокруг
sigaction()илиsignal(). Не вызывайте эти функции напрямую!PyOS_sighandler_t– это псевдоним typedef дляvoid (*)(int).
-
PyOS_sighandler_t
PyOS_setsig(int i, PyOS_sighandler_t h)¶ Устанавливает обработчик сигнала для сигнала i равным h; возвращает старый обработчик сигнала. Это тонкая обёртка вокруг либо
sigaction(), либоsignal(). Не вызывайте эти функции напрямую!PyOS_sighandler_t– это псевдоним typedef дляvoid (*)(int).
Системные функции¶System Functions
Это служебные функции, предоставляющие функциональность модуля sys
коду на C. Все они работают со словарём модуля sys текущего потока интерпретатора,
который хранится во внутренней структуре состояния потока.
-
PyObject *
PySys_GetObject(char *name)¶ - Возвращаемое значение: заимствованная ссылка.
Возвращает объект name из модуля
sysили NULL, если он не существует, без установки исключения.
-
FILE *
PySys_GetFile(char *name, FILE *def)¶ Возвращает
FILE*, связанный с объектом name вsysмодуле, или def, если name отсутствует в модуле или не связан сFILE*.
-
int
PySys_SetObject(char *name, PyObject *v)¶ Устанавливает name в модуле
sysв значение v, если только v не равно NULL; в этом случае name удаляется из модуля sys. Возвращает0при успехе,-1при ошибке.
-
void
PySys_ResetWarnOptions()¶ Сбрасывает
sys.warnoptionsв пустой список.
-
void
PySys_AddWarnOption(char *s)¶ Добавляет s к
sys.warnoptions.
-
void
PySys_SetPath(char *path)¶ Устанавливает
sys.pathв объект списка путей, найденных в path, который должен быть списком путей, разделённых разделителем пути поиска платформы (:в Unix,;в Windows).
-
void
PySys_WriteStdout(const char *format, ...)¶ Записывает выходную строку, описываемую format, в
sys.stdout. Исключения не вызываются, даже если произошло усечение (см. ниже).format должен ограничивать общий размер форматированной выходной строки до 1000 байт или менее – после 1000 байт строка усекается. В частности, это означает, что не должно быть неограниченных форматов «%s»; их следует ограничивать с помощью «%.<N>s», где <N> – десятичное число, рассчитанное так, чтобы <N> плюс максимальный размер другого форматированного текста не превышал 1000 байт. Также следует остерегаться «%f», который может печатать сотни цифр для очень больших чисел.
Если возникает проблема или
sys.stdoutне задан, форматированное сообщение записывается в настоящий (на уровне C) stdout.
-
void
PySys_WriteStderr(const char *format, ...)¶ Как и выше, но запись выполняется в
sys.stderrили stderr.
Управление процессами¶Process Control
-
void
Py_FatalError(const char *message)¶ Выводит фатальное сообщение об ошибке и завершает процесс. Очистка не выполняется. Эту функцию следует вызывать только при обнаружении условия, которое делает опасным продолжение использования интерпретатора Python; например, когда управление объектами повреждено. В Unix вызывается стандартная функция библиотеки C
abort(), которая пытается создать файлcore.
-
void
Py_Exit(int status)¶ Завершает текущий процесс. Вызывает
Py_Finalize(), а затем стандартную функцию библиотеки Cexit(status).
-
int
Py_AtExit(void (*func)())¶ Регистрирует функцию очистки, которая будет вызвана с помощью
Py_Finalize(). Функция очистки будет вызвана без аргументов и не должна возвращать значение. Можно зарегистрировать не более 32 функций очистки. При успешной регистрацииPy_AtExit()возвращает0; при неудаче –-1. Последняя зарегистрированная функция очистки вызывается первой. Каждая функция очистки будет вызвана не более одного раза. Поскольку внутренняя финализация Python завершится до вызова функции очистки, func не должна вызывать никакие API Python.