Spec-Zone.ru › Python 3.9

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

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 равно нулю;

END_OF_DOCUMENT_MARKER
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

Spec-Zone.ru

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