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

sys.md

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

1> **Источник:** https://python-all.ru/2.6/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**long `PyOS_GetLastModificationTime`(char *\*filename*)**4647Возвращает время последнего изменения файла4849*filename*5051. Результат кодируется так же, как временная метка, возвращаемая стандартной функцией библиотеки C5253`time()`5455.5657**void `PyOS_AfterFork`()**5859Функция для обновления некоторого внутреннего состояния после ветвления процесса; её следует вызвать в новом процессе, если интерпретатор Python будет продолжать использоваться. Если в новый процесс загружается новый исполняемый файл, эту функцию вызывать не нужно.6061**int `PyOS_CheckStack`()**6263Возвращает истину, когда в интерпретаторе заканчивается стековое пространство. Это надёжная проверка, но доступна только если определён6465`USE_STACKCHECK`6667(в настоящее время на Windows с компилятором Microsoft Visual C++).6869`USE_STACKCHECK`7071определяется автоматически; не следует изменять это определение в собственном коде.7273**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\_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/2.6/library/sys.html#module-sys) доступной из кода на C. Все они работают со словарём модуля [`sys`](https://python-all.ru/2.6/library/sys.html#module-sys) текущего потока интерпретатора, который хранится во внутренней структуре состояния потока.128129**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) \*`PySys_GetObject`(char *\*name*)**130131*Возвращаемое значение: заимствованная ссылка.*132133Возвращает объект *name* из модуля [`sys`](https://python-all.ru/2.6/library/sys.html#module-sys) или *NULL*, если он не существует, без установки исключения.134135**FILE \*`PySys_GetFile`(char *\*name*, FILE *\*def*)**136137Возвращает138139`FILE*`140141, связанный с объектом142143*name*144145в модуле146147[`sys`](https://python-all.ru/2.6/library/sys.html#module-sys)148149, или150151*def*152153, если154155*name*156157отсутствует в модуле или не связан с158159`FILE*`160161.162163**int `PySys_SetObject`(char *\*name*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*v*)**164165Устанавливает166167*name*168169в модуле170171[`sys`](https://python-all.ru/2.6/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**void `PySys_ResetWarnOptions`()**200201Сбрасывает202203[`sys.warnoptions`](https://python-all.ru/2.6/library/sys.html#sys.warnoptions)204205в пустой список.206207**void `PySys_AddWarnOption`(char *\*s*)**208209Добавляет210211*s*212213в214215[`sys.warnoptions`](https://python-all.ru/2.6/library/sys.html#sys.warnoptions)216217.218219**void `PySys_SetPath`(char *\*path*)**220221Устанавливает222223[`sys.path`](https://python-all.ru/2.6/library/sys.html#sys.path)224225в объект-список путей, найденных в226227*path*228229, который должен представлять собой список путей, разделённых разделителем путей поиска платформы (230231`:`232233в Unix,234235`;`236237в Windows).238239**void `PySys_WriteStdout`(const char *\*format*, ...)**240241Записывает выходную строку, описываемую *format*, в [`sys.stdout`](https://python-all.ru/2.6/library/sys.html#sys.stdout). Исключения не возникают, даже если происходит усечение (см. ниже).242243*format* должен ограничивать общий размер форматированной выходной строки до 1000 байт или менее – после 1000 байт строка усекается. В частности, это означает, что не должно быть неограниченных форматов «%s»; их следует ограничивать с помощью «%.\<N\>s», где \<N\> – десятичное число, рассчитанное так, чтобы \<N\> плюс максимальный размер другого форматированного текста не превышал 1000 байт. Также следует остерегаться «%f», который может печатать сотни цифр для очень больших чисел.244245Если возникает проблема или [`sys.stdout`](https://python-all.ru/2.6/library/sys.html#sys.stdout) не задан, форматированное сообщение записывается в настоящий (на уровне C) *stdout*.246247**void `PySys_WriteStderr`(const char *\*format*, ...)**248249Как и выше, но запись производится в250251[`sys.stderr`](https://python-all.ru/2.6/library/sys.html#sys.stderr)252253или254255*stderr*256257.258259# Управление процессами260261**void `Py_FatalError`(const char *\*message*)**262263Выводит сообщение о фатальной ошибке и завершает процесс. Очистка не выполняется. Эту функцию следует вызывать только в случае, когда обнаружено состояние, при котором дальнейшее использование интерпретатора Python становится опасным; например, если управление объектами повреждено. В Unix вызывается функция стандартной библиотеки C `abort()`, которая пытается создать файл `core` .264265**void `Py_Exit`(int *status*)**266267Завершает текущий процесс. Вызывает [`Py_Finalize()`](https://python-all.ru/2.6/c-api/init.html#Py_Finalize), а затем – функцию стандартной библиотеки C `exit(status)`.268269**int `Py_AtExit`(void (\*func) *()*)**270271Регистрирует функцию очистки, которая будет вызвана функцией [`Py_Finalize()`](https://python-all.ru/2.6/c-api/init.html#Py_Finalize). Функция очистки вызывается без аргументов и не должна возвращать значение. Можно зарегистрировать не более 32 функций очистки. В случае успешной регистрации [`Py_AtExit()`](https://python-all.ru/2.6/c-api/sys.html#Py_AtExit) возвращает `0`; при неудаче – `-1`. Последняя зарегистрированная функция очистки вызывается первой. Каждая функция очистки вызывается не более одного раза. Поскольку внутренняя финализация Python завершается до вызова функции очистки, функция *func* не должна вызывать никакие API Python.272