Утилиты операционной системы
-
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