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

Словарь, представляющий среду string на момент запуска интерпретатора. Ключи и значения - это байты в Unix и 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.

Вернуться на верх