sys.md
1> **Источник:** https://python-all.ru/3.0/c-api/sys.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Утилиты операционной системы89**\[Py\_FdIsInteractive\]int `Py_FdIsInteractive`(FILE *\*fp*, const char *\*filename*)**1011Возвращает истину (ненулевое значение), если файл стандартного ввода-вывода1213*fp*1415с именем1617*filename*1819считается интерактивным. Это справедливо для файлов, для которых2021`isatty(fileno(fp))`2223возвращает истину. Если глобальный флаг2425`Py_InteractiveFlag`2627истинен, эта функция также возвращает истину, если указатель2829*filename*3031равен3233*NULL*3435или имя совпадает с одной из строк3637`'<stdin>'`3839или4041`'???'`4243.4445**\[PyOS\_GetLastModificationTime\]long `PyOS_GetLastModificationTime`(char *\*filename*)**4647Возвращает время последнего изменения файла4849*filename*5051. Результат кодируется так же, как отметка времени, возвращаемая стандартной библиотечной функцией языка C5253`time`5455.5657**\[PyOS\_AfterFork\]void `PyOS_AfterFork`()**5859Функция для обновления некоторого внутреннего состояния после ветвления процесса; её следует вызвать в новом процессе, если интерпретатор Python будет продолжать использоваться. Если в новый процесс загружается новый исполняемый файл, эту функцию вызывать не нужно.6061**\[PyOS\_CheckStack\]int `PyOS_CheckStack`()**6263Возвращает истину, когда в интерпретаторе заканчивается стековое пространство. Это надёжная проверка, но доступна только если определён6465`USE_STACKCHECK`6667(в настоящее время на Windows с компилятором Microsoft Visual C++).6869`USE_STACKCHECK`7071определяется автоматически; не следует изменять это определение в собственном коде.7273**\[PyOS\_getsig\]PyOS\_sighandler\_t `PyOS_getsig`(int *i*)**7475Возвращает текущий обработчик сигнала7677*i*7879. Эта функция является тонкой обёрткой над8081`sigaction`8283или8485`signal`8687. Не вызывайте эти функции напрямую!8889`PyOS_sighandler_t`9091– это псевдоним typedef для9293`void (*)(int)`9495.9697**\[PyOS\_setsig\]PyOS\_sighandler\_t `PyOS_setsig`(int *i*, PyOS\_sighandler\_t *h*)**9899Устанавливает обработчик сигнала100101*i*102103равным104105*h*106107; возвращает старый обработчик сигнала. Это тонкая обёртка над108109`sigaction`110111или112113`signal`114115. Не вызывайте эти функции напрямую!116117`PyOS_sighandler_t`118119– это псевдоним typedef для120121`void (*)(int)`122123.124125# Системные функции126127Это служебные функции, которые делают функциональность модуля [`sys`](https://python-all.ru/3.0/library/sys.html#module-sys) доступной из кода на C. Все они работают со словарём модуля [`sys`](https://python-all.ru/3.0/library/sys.html#module-sys) текущего потока интерпретатора, который хранится во внутренней структуре состояния потока.128129**\[PySys\_GetObject\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) \*`PySys_GetObject`(char *\*name*)**130131*Возвращаемое значение: заимствованная ссылка.*132133Возвращает объект *name* из модуля [`sys`](https://python-all.ru/3.0/library/sys.html#module-sys) или *NULL*, если он не существует, без установки исключения.134135**\[PySys\_GetFile\]FILE \*`PySys_GetFile`(char *\*name*, FILE *\*def*)**136137Возвращает138139`FILE*`140141, связанный с объектом142143*name*144145в модуле146147[`sys`](https://python-all.ru/3.0/library/sys.html#module-sys)148149, или150151*def*152153, если154155*name*156157отсутствует в модуле или не связан с158159`FILE*`160161.162163**\[PySys\_SetObject\]int `PySys_SetObject`(char *\*name*, [PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*v*)**164165Устанавливает166167*name*168169в модуле170171[`sys`](https://python-all.ru/3.0/library/sys.html#module-sys)172173равным174175*v*176177, если только178179*v*180181не равен182183*NULL*184185; в этом случае186187*name*188189удаляется из модуля sys. Возвращает190191`0`192193при успехе,194195`-1`196197при ошибке.198199**\[PySys\_ResetWarnOptions\]void `PySys_ResetWarnOptions`(void)**200201Сбрасывает202203[`sys.warnoptions`](https://python-all.ru/3.0/library/sys.html#sys.warnoptions)204205в пустой список.206207**\[PySys\_AddWarnOption\]void `PySys_AddWarnOption`(wchar\_t *\*s*)**208209Добавляет210211*s*212213в214215[`sys.warnoptions`](https://python-all.ru/3.0/library/sys.html#sys.warnoptions)216217.218219**\[PySys\_SetPath\]void `PySys_SetPath`(wchar\_t *\*path*)**220221Устанавливает222223[`sys.path`](https://python-all.ru/3.0/library/sys.html#sys.path)224225в объект-список путей, найденных в226227*path*228229, который должен представлять собой список путей, разделённых разделителем путей поиска платформы (230231`:`232233в Unix,234235`;`236237в Windows).238239**\[PySys\_WriteStdout\]void `PySys_WriteStdout`(const char *\*format*, ...)**240241Записывает выходную строку, описываемую *format*, в [`sys.stdout`](https://python-all.ru/3.0/library/sys.html#sys.stdout). Исключения не возникают, даже если происходит усечение (см. ниже).242243*format* должен ограничивать общий размер форматированной выходной строки до 1000 байт или менее – после 1000 байт строка усекается. В частности, это означает, что не должно быть неограниченных форматов «%s»; их следует ограничивать с помощью «%.\<N\>s», где \<N\> – десятичное число, рассчитанное так, чтобы \<N\> плюс максимальный размер другого форматированного текста не превышал 1000 байт. Также следует остерегаться «%f», который может печатать сотни цифр для очень больших чисел.244245Если возникает проблема или [`sys.stdout`](https://python-all.ru/3.0/library/sys.html#sys.stdout) не задан, форматированное сообщение записывается в настоящий (на уровне C) *stdout*.246247**\[PySys\_WriteStderr\]void `PySys_WriteStderr`(const char *\*format*, ...)**248249Как и выше, но запись производится в250251[`sys.stderr`](https://python-all.ru/3.0/library/sys.html#sys.stderr)252253или254255*stderr*256257.258259# Управление процессами260261**\[Py\_FatalError\]void `Py_FatalError`(const char *\*message*)**262263Выводит сообщение о фатальной ошибке и завершает процесс. Очистка не выполняется. Эту функцию следует вызывать только при обнаружении условия, при котором использование интерпретатора Python становится опасным; например, когда администрирование объектов выглядит повреждённым. В Unix вызывается стандартная библиотечная функция C `abort`, которая попытается создать файл `core`.264265**\[Py\_Exit\]void `Py_Exit`(int *status*)**266267Завершает текущий процесс. Эта функция вызывает [`Py_Finalize`](https://python-all.ru/3.0/c-api/init.html#Py_Finalize), а затем стандартную библиотечную функцию C `exit(status)`.268269**\[Py\_AtExit\]int `Py_AtExit`(void (\*func) *()*)**270271Регистрирует функцию очистки, которая будет вызвана функцией [`Py_Finalize`](https://python-all.ru/3.0/c-api/init.html#Py_Finalize). Функция очистки будет вызвана без аргументов и не должна возвращать значение. Можно зарегистрировать не более 32 функций очистки. При успешной регистрации [`Py_AtExit`](https://python-all.ru/3.0/c-api/sys.html#Py_AtExit) возвращает `0`; при неудаче возвращает `-1`. Функция очистки, зарегистрированная последней, вызывается первой. Каждая функция очистки будет вызвана не более одного раза. Поскольку внутренняя финализация Python будет завершена до вызова функции очистки, функция *func* не должна вызывать никакие API Python.272