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


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

Availability: Unix.

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

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

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

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

Поддержка больших файлов включается в Python, когда размер off_t больше long и long long по крайней мере такой же, как off_t. Для включения этого режима может потребоваться настройка и компиляция Python с определенными флагами компилятора. Например, в 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.