Документация Python неофициальный перевод
Содержание страницы

36.1. posix – Самые распространенные системные вызовы POSIXposix – The most common POSIX system calls

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

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

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

36.1.1. Поддержка больших файловLarge File Support

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

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

36.1.2. Примечательное содержимое модуляNotable Module Contents

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

posix.environ

Словарь, представляющий строковое окружение на момент запуска интерпретатора. Например, environ['HOME'] – это путь к вашему домашнему каталогу, эквивалентный getenv("HOME") в C.

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

Примечание

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