Spec-Zone.ru › Python 3.14

Утилиты операционной системы

PyObject *PyOS_FSPath(PyObject *path)
Возвращаемое значение: новая ссылка. Входит в стабильный ABI начиная с версии 3.6.

Возвращает представление файловой системы для path. Если объект является объектом str или bytes, возвращается новая сильная ссылка. Если объект реализует интерфейс os.PathLike, возвращается __fspath__(), если результат является объектом str или bytes. В противном случае возбуждается исключение TypeError и возвращается NULL.

Добавлено в версии 3.6.

int Py_FdIsInteractive(FILE *fp, const char *filename)

Возвращает true (ненулевое значение), если стандартный файл ввода-вывода fp с именем filename считается интерактивным. Это относится к файлам, для которых значение isatty(fileno(fp)) равно true. Если PyConfig.interactive не равен нулю, эта функция также возвращает true, если указатель filename равен NULL или если имя совпадает с одной из строк '<stdin>' или '???'.

Эту функцию нельзя вызывать до инициализации Python.

void PyOS_BeforeFork()
Входит в стабильный ABI на платформах с fork() начиная с версии 3.7.

Функция для подготовки некоторого внутреннего состояния перед созданием процесса с помощью fork. Её следует вызвать перед вызовом fork() или любой аналогичной функции, клонирующей текущий процесс. Доступна только в системах, где определён fork().

Предупреждение

Вызов C fork() следует выполнять только из «главного» потока («главного» интерпретатора). То же правило действует для PyOS_BeforeFork().

Добавлено в версии 3.7.

void PyOS_AfterFork_Parent()
Входит в стабильный ABI на платформах с fork() начиная с версии 3.7.

Функция для обновления некоторого внутреннего состояния после создания процесса с помощью fork. Её следует вызвать из родительского процесса после вызова fork() или любой аналогичной функции, клонирующей текущий процесс, независимо от того, удалось ли клонировать процесс. Доступна только в системах, где определён fork().

Предупреждение

Вызов C fork() следует выполнять только из «главного» потока («главного» интерпретатора). То же правило действует для PyOS_AfterFork_Parent().

Добавлено в версии 3.7.

void PyOS_AfterFork_Child()
Входит в стабильный ABI на платформах с fork() начиная с версии 3.7.

Функция для обновления внутреннего состояния интерпретатора после создания процесса с помощью fork. Её необходимо вызвать из дочернего процесса после вызова fork() или любой аналогичной функции, клонирующей текущий процесс, если есть вероятность, что процесс снова обратится к интерпретатору Python. Доступна только в системах, где определён fork().

Предупреждение

Вызов C fork() следует выполнять только из «главного» потока («главного» интерпретатора). То же правило действует для PyOS_AfterFork_Child().

Добавлено в версии 3.7.

См. также

os.register_at_fork() позволяет зарегистрировать пользовательские функции Python, которые будут вызваны функциями PyOS_BeforeFork(), PyOS_AfterFork_Parent() и PyOS_AfterFork_Child().

void PyOS_AfterFork()
Входит в стабильный ABI на платформах с fork().

Функция для обновления некоторого внутреннего состояния после создания процесса с помощью fork; её следует вызвать в новом процессе, если интерпретатор Python будет продолжать использоваться. Если в новый процесс загружается новый исполняемый файл, вызывать эту функцию не нужно.

Устарела с версии 3.7: Эта функция заменена на PyOS_AfterFork_Child().

int PyOS_CheckStack()
Входит в стабильный ABI на платформах с USE_STACKCHECK начиная с версии 3.7.

Возвращает true, если у интерпретатора заканчивается пространство стека. Это надёжная проверка, однако она доступна только при определённом USE_STACKCHECK (в настоящее время — в некоторых версиях Windows с компилятором Microsoft Visual C++). USE_STACKCHECK определяется автоматически; не следует изменять его определение в собственном коде.

typedef void (*PyOS_sighandler_t)(int)
Входит в стабильный ABI.
PyOS_sighandler_t PyOS_getsig(int i)
Входит в стабильный ABI.

Возвращает текущий обработчик сигнала для сигнала i. Это простая обёртка над одной из функций: sigaction() или signal(). Не вызывайте эти функции напрямую!

PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)
Входит в стабильный ABI.

Устанавливает обработчик сигнала i равным h; возвращает старый обработчик сигнала. Это простая обёртка над одной из функций: sigaction() или signal(). Не вызывайте эти функции напрямую!

int PyOS_InterruptOccurred(void)
Входит в стабильный ABI.

Проверяет, получен ли сигнал SIGINT.

Возвращает 1, если произошло SIGINT, и сбрасывает флаг сигнала; в противном случае возвращает 0.

В большинстве случаев вместо этой функции следует использовать PyErr_CheckSignals(). PyErr_CheckSignals() вызывает соответствующие обработчики всех ожидающих сигналов, позволяя коду Python корректно обработать сигнал. Эта функция только обнаруживает SIGINT и не вызывает обработчики сигналов Python.

Эта функция безопасна для асинхронных обработчиков сигналов и не может завершиться с ошибкой. Вызывающий код должен удерживать присоединённое состояние потока.

wchar_t *Py_DecodeLocale(const char *arg, size_t *size)
Входит в стабильный ABI начиная с версии 3.7.

Предупреждение

Эту функцию не следует вызывать напрямую: используйте API PyConfig с функцией PyConfig_SetBytesString(), которая гарантирует, что предварительная инициализация Python выполнена.

Эту функцию нельзя вызывать до предварительной инициализации Python; также необходимо правильно настроить локаль LC_CTYPE: см. функцию Py_PreInitialize().

Декодирует байтовую строку с использованием кодировки файловой системы и обработчика ошибок. Если обработчиком ошибок является обработчик ошибок surrogateescape, недекодируемые байты декодируются как символы в диапазоне U+DC80..U+DCFF; если же последовательность байтов может быть декодирована как суррогатный символ, байты экранируются с помощью обработчика ошибок surrogateescape вместо декодирования.

Возвращает указатель на новую строку широких символов, выделенную в памяти; для освобождения памяти используйте PyMem_RawFree(). Если size не равен NULL, количество широких символов без учёта нулевого символа записывается в *size

При ошибке декодирования или выделения памяти возвращает NULL. Если size не равен NULL, при ошибке выделения памяти в *size устанавливается значение (size_t)-1, а при ошибке декодирования — (size_t)-2.

Кодировка файловой системы и обработчик ошибок выбираются функцией PyConfig_Read(): см. члены filesystem_encoding и filesystem_errors структуры PyConfig.

Ошибки декодирования не должны возникать, если только в библиотеке C нет ошибки.

Для обратного кодирования строки символов в байтовую строку используйте функцию Py_EncodeLocale().

См. также

Функции PyUnicode_DecodeFSDefaultAndSize() и PyUnicode_DecodeLocaleAndSize().

Добавлено в версии 3.5.

Изменено в версии 3.7: В режиме UTF-8 в Python функция теперь использует кодировку UTF-8.

Изменено в версии 3.8: В Windows функция теперь использует кодировку UTF-8, если PyPreConfig.legacy_windows_fs_encoding равен нулю;

char *Py_EncodeLocale(const wchar_t *text, size_t *error_pos)
Входит в стабильный ABI начиная с версии 3.7.

Кодирует строку широких символов с использованием кодировки файловой системы и обработчика ошибок. Если обработчиком ошибок является обработчик ошибок surrogateescape, суррогатные символы в диапазоне U+DC80..U+DCFF преобразуются в байты 0x80..0xFF.

Возвращает указатель на новую байтовую строку, выделенную в памяти; для освобождения памяти используйте PyMem_Free(). При ошибке кодирования или выделения памяти возвращает NULL.

Если error_pos не равен NULL, при успешном выполнении в *error_pos устанавливается значение (size_t)-1, а при ошибке кодирования — индекс недопустимого символа.

Кодировка файловой системы и обработчик ошибок выбираются функцией PyConfig_Read(): см. члены filesystem_encoding и filesystem_errors структуры PyConfig.

Для обратного декодирования байтовой строки в строку широких символов используйте функцию Py_DecodeLocale().

Предупреждение

Эту функцию нельзя вызывать до предварительной инициализации Python; также необходимо правильно настроить локаль LC_CTYPE: см. функцию Py_PreInitialize().

См. также

Функции PyUnicode_EncodeFSDefault() и PyUnicode_EncodeLocale().

Добавлено в версии 3.5.

Изменено в версии 3.7: В режиме UTF-8 в Python функция теперь использует кодировку UTF-8.

Изменено в версии 3.8: В Windows функция теперь использует кодировку UTF-8, если PyPreConfig.legacy_windows_fs_encoding равен нулю.

FILE *Py_fopen(PyObject *path, const char *mode)

Аналогична fopen(), но path является объектом Python, а при ошибке устанавливается исключение.

path должен быть объектом str, объектом bytes или объектом, подобным пути.

При успешном выполнении возвращает новый файловый указатель. При ошибке устанавливает исключение и возвращает NULL.

Файл следует закрывать с помощью Py_fclose(), а не прямым вызовом fclose().

Файловый дескриптор создаётся с запретом наследования (PEP 446).

У вызывающего кода должно быть присоединённое состояние потока.

Добавлено в версии 3.14.

int Py_fclose(FILE *file)

Закрывает файл, открытый с помощью Py_fopen().

При успешном выполнении возвращает 0. При ошибке возвращает EOF, а для указания ошибки устанавливается errno. В обоих случаях любое дальнейшее обращение к потоку (в том числе повторный вызов Py_fclose()) приводит к неопределённому поведению.

Добавлено в версии 3.14.

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/c-api/sys.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API