Утилиты операционной системы
-
PyObject* PyOS_FSPath(PyObject *path) -
Значение возврата: новая ссылка.
Возвращает файловое представление для 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. Если глобальный флагPy_InteractiveFlagравен true, эта функция также возвращает true, если указатель filename равенNULLили если имя равно одному из строк'<stdin>'или'???'.
-
void PyOS_BeforeFork() -
Функция для подготовки некоторых внутренних состояний перед разветвлением процесса. Она должна вызываться перед вызовом
fork()или любой аналогичной функции, которая клонирует текущий процесс. Доступна только на системах, гдеfork()определено.Предупреждение
Вызов C
fork()должен выполняться только из главного потока (главного интерпретатора). То же самое верно дляPyOS_BeforeFork().Новая в версии 3.7.
-
void PyOS_AfterFork_Parent() -
Функция для обновления некоторых внутренних состояний после разветвления процесса. Она должна вызываться в родительском процессе после вызова
fork()или любой аналогичной функции, которая клонирует текущий процесс, независимо от того, был ли процесс клонирования успешным. Доступна только на системах, гдеfork()определено.Предупреждение
Вызов C
fork()должен выполняться только из главного потока (главного интерпретатора). То же самое верно дляPyOS_AfterFork_Parent().Новая в версии 3.7.
-
void PyOS_AfterFork_Child() -
Функция для обновления внутреннего состояния интерпретатора после разветвления процесса. Она должна вызываться в дочернем процессе после вызова
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() -
Функция для обновления некоторых внутренних состояний после разветвления процесса; она должна вызываться в новом процессе, если интерпретатор Python будет продолжать использоваться. Если в новый процесс загружается новый исполняемый файл, вызывать эту функцию не нужно.
Устарело начиная с версии 3.7: Эта функция устарела и заменена на
PyOS_AfterFork_Child().
-
int PyOS_CheckStack() -
Возвращает true, когда у интерпретатора заканчивается место в стеке. Это надёжная проверка, но доступна только тогда, когда
USE_STACKCHECKопределено (в настоящее время на Windows с использованием компилятора Microsoft Visual C++).USE_STACKCHECKбудет определено автоматически; вы никогда не должны изменять определение в своём коде.
-
PyOS_sighandler_t PyOS_getsig(int i) -
Возвращает текущего обработчика сигнала для сигнала i. Это тонкая обертка вокруг
sigaction()илиsignal(). Не вызывайте эти функции напрямую!PyOS_sighandler_tявляется псевдонимом типаvoid (*)(int).
-
PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h) -
Устанавливает обработчик сигнала для сигнала i в h; возвращает старый обработчик сигнала. Это тонкая обертка вокруг
sigaction()илиsignal(). Не вызывайте эти функции напрямую!PyOS_sighandler_tявляется псевдонимом типаvoid (*)(int).
-
wchar_t* Py_DecodeLocale(const char* arg, size_t *size) -
Декодирует строку байтов из кодировки локали с обработчиком ошибок surrogateescape: нераспознаваемые байты декодируются как символы в диапазоне U+DC80..U+DCFF. Если последовательность байтов может быть декодирована как символ замены, используйте обработчик ошибок surrogateescape, чтобы избежать декодирования.
Кодировка, приоритет с наивысшего к наименьшему:
-
UTF-8на macOS, Android и VxWorks; -
UTF-8на Windows, еслиPy_LegacyWindowsFSEncodingFlagравно нулю; -
UTF-8если режим Python UTF-8 включён; -
ASCIIесли локальLC_CTYPEравна"C",nl_langinfo(CODESET)возвращает кодировкуASCII(или её псевдоним), а функцииmbstowcs()иwcstombs()используют кодировкуISO-8859-1. - текущая кодировка локали.
Возвращает указатель на недавно выделенную строку широких символов, используйте
PyMem_RawFree()для освобождения памяти. Если размер неNULL, запишите количество широких символов, исключая нулевой символ, в*sizeВозвращает
NULLпри ошибке декодирования или выделения памяти. Если size неNULL,*sizeустанавливается в(size_t)-1при ошибке выделения памяти или в(size_t)-2при ошибке декодирования.Ошибки декодирования не должны происходить, если только в библиотеке C нет ошибки.
Используйте функцию
Py_EncodeLocale()для кодирования строки символов обратно в строку байтов.См. также
Функции
PyUnicode_DecodeFSDefaultAndSize()иPyUnicode_DecodeLocaleAndSize().Новая в версии 3.5.
Изменено в версии 3.7: Функция теперь использует кодировку UTF-8 в режиме UTF-8.
Изменено в версии 3.8: Функция теперь использует кодировку UTF-8 на Windows, если
Py_LegacyWindowsFSEncodingFlagравно нулю; -
-
char* Py_EncodeLocale(const wchar_t *text, size_t *error_pos) -
Кодировка строки широких символов в кодировку локали с обработчиком ошибок surrogateescape: символы-заменители в диапазоне U+DC80..U+DCFF преобразуются в байты 0x80..0xFF.
Кодировка, в порядке приоритета:
-
UTF-8на macOS, Android и VxWorks; -
UTF-8на Windows, еслиPy_LegacyWindowsFSEncodingFlagравно нулю; -
UTF-8если включен режим UTF-8 в Python; -
ASCIIесли локалиLC_CTYPE—"C", то функцияnl_langinfo(CODESET)возвращает кодировкуASCII(или её псевдоним), и функцииmbstowcs()иwcstombs()используют кодировкуISO-8859-1. - текущая кодировка локали.
Функция использует кодировку UTF-8 в режиме UTF-8 Python.
Возвращает указатель на новую строку байтов. Для освобождения памяти используйте
PyMem_Free(). ВозвращаетNULLпри ошибке кодирования или выделения памяти.Если error_pos не
NULL, то в случае успеха*error_posустанавливается в(size_t)-1, или в индекс некорректного символа при ошибке кодирования.Для декодирования строки байтов обратно в строку широких символов используйте функцию
Py_DecodeLocale().См. также
Функции
PyUnicode_EncodeFSDefault()иPyUnicode_EncodeLocale().Введено в версии 3.5.
Изменено в версии 3.7: Функция теперь использует кодировку UTF-8 в режиме UTF-8.
Изменено в версии 3.8: Функция теперь использует кодировку UTF-8 на Windows, если
Py_LegacyWindowsFSEncodingFlagравно нулю. -
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/c-api/sys.html