sys.md
1> **Источник:** https://python-all.ru/2.7/c-api/sys.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Утилиты операционной системы89#### `int Py_FdIsInteractive(FILE *fp, const char *filename)`1011Возвращает true (ненулевое значение), если стандартный файл ввода-вывода *fp* с именем *filename* считается интерактивным. Это верно для файлов, для которых `isatty(fileno(fp))` истинно. Если глобальный флаг `Py_InteractiveFlag` истинен, эта функция также возвращает true, если указатель *filename* равен *NULL* или если имя совпадает с одной из строк `'<stdin>'` или `'???'`.1213#### `void PyOS_AfterFork()`1415Функция для обновления некоторого внутреннего состояния после ветвления процесса; её следует вызвать в новом процессе, если интерпретатор Python будет продолжать использоваться. Если в новый процесс загружается новый исполняемый файл, эту функцию вызывать не нужно.1617#### `int PyOS_CheckStack()`1819Возвращает истину, когда интерпретатору не хватает места в стеке. Это надёжная проверка, но доступна только при определении `USE_STACKCHECK` (в настоящее время в Windows с использованием компилятора Microsoft Visual C++). `USE_STACKCHECK` будет определён автоматически; никогда не следует изменять это определение в своём коде.2021#### `PyOS_sighandler_t PyOS_getsig(int i)`2223Возвращает текущий обработчик сигнала для сигнала *i*. Это тонкая обёртка вокруг `sigaction()` или `signal()`. Не вызывайте эти функции напрямую! `PyOS_sighandler_t` – это псевдоним typedef для `void (*)(int)`.2425#### `PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)`2627Устанавливает обработчик сигнала для сигнала *i* равным *h*; возвращает старый обработчик сигнала. Это тонкая обёртка вокруг либо `sigaction()`, либо `signal()`. Не вызывайте эти функции напрямую! `PyOS_sighandler_t` – это псевдоним typedef для `void (*)(int)`.2829# Системные функции3031Это служебные функции, предоставляющие функциональность модуля [`sys`](https://python-all.ru/2.7/library/sys.html#module-sys) коду на C. Все они работают со словарём модуля [`sys`](https://python-all.ru/2.7/library/sys.html#module-sys) текущего потока интерпретатора, который хранится во внутренней структуре состояния потока.3233#### `PyObject *PySys_GetObject(char *name)`3435*Возвращаемое значение: заимствованная ссылка.*3637Возвращает объект *name* из модуля [`sys`](https://python-all.ru/2.7/library/sys.html#module-sys) или *NULL*, если он не существует, без установки исключения.3839#### `FILE *PySys_GetFile(char *name, FILE *def)`4041Возвращает `FILE*`, связанный с объектом *name* в [`sys`](https://python-all.ru/2.7/library/sys.html#module-sys) модуле, или *def*, если *name* отсутствует в модуле или не связан с `FILE*`.4243#### `int PySys_SetObject(char *name, PyObject *v)`4445Устанавливает *name* в модуле [`sys`](https://python-all.ru/2.7/library/sys.html#module-sys) в значение *v*, если только *v* не равно *NULL*; в этом случае *name* удаляется из модуля sys. Возвращает `0` при успехе, `-1` при ошибке.4647#### `void PySys_ResetWarnOptions()`4849Сбрасывает [`sys.warnoptions`](https://python-all.ru/2.7/library/sys.html#sys.warnoptions) в пустой список.5051#### `void PySys_AddWarnOption(char *s)`5253Добавляет *s* к [`sys.warnoptions`](https://python-all.ru/2.7/library/sys.html#sys.warnoptions).5455#### `void PySys_SetPath(char *path)`5657Устанавливает [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path) в объект списка путей, найденных в *path*, который должен быть списком путей, разделённых разделителем пути поиска платформы (`:` в Unix, `;` в Windows).5859#### `void PySys_WriteStdout(const char *format, ...)`6061Записывает выходную строку, описываемую *format*, в [`sys.stdout`](https://python-all.ru/2.7/library/sys.html#sys.stdout). Исключения не вызываются, даже если произошло усечение (см. ниже).6263*format* должен ограничивать общий размер форматированной выходной строки до 1000 байт или менее – после 1000 байт строка усекается. В частности, это означает, что не должно быть неограниченных форматов «%s»; их следует ограничивать с помощью «%.\<N\>s», где \<N\> – десятичное число, рассчитанное так, чтобы \<N\> плюс максимальный размер другого форматированного текста не превышал 1000 байт. Также следует остерегаться «%f», который может печатать сотни цифр для очень больших чисел.6465Если возникает проблема или [`sys.stdout`](https://python-all.ru/2.7/library/sys.html#sys.stdout) не задан, форматированное сообщение записывается в настоящий (на уровне C) *stdout*.6667#### `void PySys_WriteStderr(const char *format, ...)`6869Как и выше, но запись выполняется в [`sys.stderr`](https://python-all.ru/2.7/library/sys.html#sys.stderr) или *stderr*.7071# Управление процессами7273#### `void Py_FatalError(const char *message)`7475Выводит фатальное сообщение об ошибке и завершает процесс. Очистка не выполняется. Эту функцию следует вызывать только при обнаружении условия, которое делает опасным продолжение использования интерпретатора Python; например, когда управление объектами повреждено. В Unix вызывается стандартная функция библиотеки C `abort()`, которая пытается создать файл `core`.7677#### `void Py_Exit(int status)`7879Завершает текущий процесс. Вызывает [`Py_Finalize()`](https://python-all.ru/2.7/c-api/init.html#c.Py_Finalize), а затем стандартную функцию библиотеки C `exit(status)`.8081#### `int Py_AtExit(void (*func)())`8283Регистрирует функцию очистки, которая будет вызвана с помощью [`Py_Finalize()`](https://python-all.ru/2.7/c-api/init.html#c.Py_Finalize). Функция очистки будет вызвана без аргументов и не должна возвращать значение. Можно зарегистрировать не более 32 функций очистки. При успешной регистрации [`Py_AtExit()`](https://python-all.ru/2.7/c-api/sys.html#c.Py_AtExit) возвращает `0`; при неудаче – `-1`. Последняя зарегистрированная функция очистки вызывается первой. Каждая функция очистки будет вызвана не более одного раза. Поскольку внутренняя финализация Python завершится до вызова функции очистки, *func* не должна вызывать никакие API Python.84