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 ГиБ из модели программирования C, где int и long являются 32-разрядными значениями. Обычно это достигается путём определения соответствующих типов размера и смещения в виде 64-битных значений. Такие файлы иногда обозначаются как большие файлы.

Поддержка больших файлов включена в 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.