Документация Python неофициальный перевод

sys.md

260 строк · 9.4 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/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Возвращает истину (ненулевое значение), если файл стандартного ввода-вывода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**void `PyOS_AfterFork`()**4647Функция для обновления некоторого внутреннего состояния после ветвления процесса; её следует вызвать в новом процессе, если интерпретатор Python будет продолжать использоваться. Если в новый процесс загружается новый исполняемый файл, эту функцию вызывать не нужно.4849**int `PyOS_CheckStack`()**5051Возвращает истину, когда в интерпретаторе заканчивается стековое пространство. Это надёжная проверка, но доступна только если определён5253`USE_STACKCHECK`5455(в настоящее время на Windows с компилятором Microsoft Visual C++).5657`USE_STACKCHECK`5859определяется автоматически; не следует изменять это определение в собственном коде.6061**PyOS\_sighandler\_t `PyOS_getsig`(int *i*)**6263Возвращает текущий обработчик сигнала для сигнала6465*i*6667. Это тонкая обёртка вокруг6869`sigaction()`7071или7273`signal()`7475. Не вызывайте эти функции напрямую!7677`PyOS_sighandler_t`7879– это псевдоним typedef для8081`void (*)(int)`8283.8485**PyOS\_sighandler\_t `PyOS_setsig`(int *i*, PyOS\_sighandler\_t *h*)**8687Устанавливает обработчик сигнала для сигнала8889*i*9091равным9293*h*9495; возвращает старый обработчик сигнала. Это тонкая обёртка вокруг9697`sigaction()`9899или100101`signal()`102103. Не вызывайте эти функции напрямую!104105`PyOS_sighandler_t`106107– это псевдоним typedef для108109`void (*)(int)`110111.112113# Системные функции114115Это служебные функции, которые делают функциональность модуля [`sys`](https://python-all.ru/3.1/library/sys.html#module-sys) доступной из кода на C. Все они работают со словарём модуля [`sys`](https://python-all.ru/3.1/library/sys.html#module-sys) текущего потока интерпретатора, который хранится во внутренней структуре состояния потока.116117**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) \*`PySys_GetObject`(char *\*name*)**118119*Возвращаемое значение: заимствованная ссылка.*120121Возвращает объект *name* из модуля [`sys`](https://python-all.ru/3.1/library/sys.html#module-sys) или *NULL*, если он не существует, без установки исключения.122123**FILE \*`PySys_GetFile`(char *\*name*, FILE *\*def*)**124125Возвращает126127`FILE*`128129, связанный с объектом130131*name*132133в модуле134135[`sys`](https://python-all.ru/3.1/library/sys.html#module-sys)136137, или138139*def*140141, если142143*name*144145отсутствует в модуле или не связан с146147`FILE*`148149.150151**int `PySys_SetObject`(char *\*name*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*v*)**152153Устанавливает154155*name*156157в модуле158159[`sys`](https://python-all.ru/3.1/library/sys.html#module-sys)160161равным162163*v*164165, если только166167*v*168169не равен170171*NULL*172173; в этом случае174175*name*176177удаляется из модуля sys. Возвращает178179`0`180181при успехе,182183`-1`184185при ошибке.186187**void `PySys_ResetWarnOptions`()**188189Сбрасывает190191[`sys.warnoptions`](https://python-all.ru/3.1/library/sys.html#sys.warnoptions)192193в пустой список.194195**void `PySys_AddWarnOption`(wchar\_t *\*s*)**196197Добавляет198199*s*200201в202203[`sys.warnoptions`](https://python-all.ru/3.1/library/sys.html#sys.warnoptions)204205.206207**void `PySys_SetPath`(wchar\_t *\*path*)**208209Устанавливает210211[`sys.path`](https://python-all.ru/3.1/library/sys.html#sys.path)212213в объект-список путей, найденных в214215*path*216217, который должен представлять собой список путей, разделённых разделителем путей поиска платформы (218219`:`220221в Unix,222223`;`224225в Windows).226227**void `PySys_WriteStdout`(const char *\*format*, ...)**228229Записывает выходную строку, описываемую *format*, в [`sys.stdout`](https://python-all.ru/3.1/library/sys.html#sys.stdout). Исключения не возникают, даже если происходит усечение (см. ниже).230231*format* должен ограничивать общий размер форматированной выходной строки до 1000 байт или менее – после 1000 байт строка усекается. В частности, это означает, что не должно быть неограниченных форматов «%s»; их следует ограничивать с помощью «%.\<N\>s», где \<N\> – десятичное число, рассчитанное так, чтобы \<N\> плюс максимальный размер другого форматированного текста не превышал 1000 байт. Также следует остерегаться «%f», который может печатать сотни цифр для очень больших чисел.232233Если возникает проблема или [`sys.stdout`](https://python-all.ru/3.1/library/sys.html#sys.stdout) не задан, форматированное сообщение записывается в настоящий (на уровне C) *stdout*.234235**void `PySys_WriteStderr`(const char *\*format*, ...)**236237Как и выше, но запись производится в238239[`sys.stderr`](https://python-all.ru/3.1/library/sys.html#sys.stderr)240241или242243*stderr*244245.246247# Управление процессами248249**void `Py_FatalError`(const char *\*message*)**250251Выводит сообщение о фатальной ошибке и завершает процесс. Очистка не выполняется. Эту функцию следует вызывать только в случае, когда обнаружено состояние, при котором дальнейшее использование интерпретатора Python становится опасным; например, если управление объектами повреждено. В Unix вызывается функция стандартной библиотеки C `abort()`, которая пытается создать файл `core` .252253**void `Py_Exit`(int *status*)**254255Завершает текущий процесс. Вызывает [`Py_Finalize()`](https://python-all.ru/3.1/c-api/init.html#Py_Finalize), а затем – функцию стандартной библиотеки C `exit(status)`.256257**int `Py_AtExit`(void (\*func) *()*)**258259Регистрирует функцию очистки, которая будет вызвана функцией [`Py_Finalize()`](https://python-all.ru/3.1/c-api/init.html#Py_Finalize). Функция очистки вызывается без аргументов и не должна возвращать значение. Можно зарегистрировать не более 32 функций очистки. В случае успешной регистрации [`Py_AtExit()`](https://python-all.ru/3.1/c-api/sys.html#Py_AtExit) возвращает `0`; при неудаче – `-1`. Последняя зарегистрированная функция очистки вызывается первой. Каждая функция очистки вызывается не более одного раза. Поскольку внутренняя финализация Python завершается до вызова функции очистки, функция *func* не должна вызывать никакие API Python.260