posix — Наиболее распространенные системные вызовы POSIX


Модуль предоставляет доступ к функциональности операционной системы, стандартизированной стандартом C и стандартом POSIX (тонко замаскированный интерфейс Unix).

Не импортируйте этот модуль напрямую. Вместо этого импортируйте модуль os, который предоставляет портабельную версию этого интерфейса. В Unix модуль os предоставляет надмножество интерфейса posix. В операционных системах, отличных от Unix, модуль posix недоступен, но подмножество всегда доступно через интерфейс os. Как только os импортируется, нет снижения производительности в использовании его вместо posix. Кроме того, os предоставляет некоторые дополнительные функциональные возможности, такие как автоматический вызов putenv() при изменении записи в os.environ.

Ошибки сообщаются как исключения; обычные исключения даны для ошибок типа, в то время как ошибки, о которых сообщают системные вызовы, поднимают OSError.

Поддержка больших файлов

Несколько операционных систем (включая AIX, HP-UX, Irix и Solaris) обеспечивают поддержку файлов размером более 2 GiB из C-моделью программирования int и long 32-разрядные значения. Обычно это достигается путем определения соответствующих типов размера и смещения как 64-разрядных значения. Такие файлы иногда называют large files.

Поддержка больших файлов включена в Python, когда размер off_t больше long, а long long меньше off_t. Для включения этого режима может потребоваться настроить и скомпилировать Python с определенными флагами компилятора. Например, она включена по умолчанию для последних версий Irix, но с Solaris 2.6 и 2.7 нужно делать что-то вроде:

CFLAGS="`getconf LFS_CFLAGS`" OPT="-g -O2 $CFLAGS" \
        ./configure

В системах Linux с поддержкой больших файлов это может сработать:

CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
        ./configure

Примечательное содержание модуля

В дополнение к многим функциям, описанным в документации модуля os, posix определяет следующий элемент данных:

posix.environ

Словарь, представляющий строку среды на момент запуска интерпретатор. Ключи и значения являются байтами в Unix и str в Windows. Например, environ[b'HOME'] (environ['HOME'] в Windows) - это путь к домашнему каталогу, эквивалентный getenv("HOME") в C.

Изменение этого словаря не влияет на среду строка, переданную execv(), popen() или system(); если необходимо изменить среду, передайте environ execve() или добавьте назначения переменных и экспортируйте инструкции в команду строка для system() или popen().

Изменено в версии 3.2: В Unix ключи и значения являются байтами.

Примечание

Модуль os обеспечивает альтернативную реализацию environ, которая обновляет среду при изменении. Обратите внимание также, что обновление os.environ отдаст этот устаревший словарь. Рекомендуется использовать версию модуля os для прямого доступа к модулю posix.