# `posix` --- 最も一般的な POSIX システムコール群

このモジュールはオペレーティングシステムの機能のうち、C 言語標準および (Unix インターフェースをほんの少し隠蔽した) POSIX 標準で標準化されている機能に対するアクセス機構を提供します。

Availability: Unix.

Do not import this module directly. Instead, import the module `os`, which provides a portable version of this interface. On Unix, the `os` module provides a superset of the `posix` interface. On non-Unix operating systems the `posix` module is not available, but a subset is always available through the `os` interface. Once `os` is imported, there is no performance penalty in using it instead of `posix`. In addition, `os` provides some additional functionality, such as automatically calling `putenv()` when an entry in `os.environ` is changed.

エラーは例外として報告されます; よくある例外は型エラーです。一方、システムコールから報告されたエラーは以下に述べるように `OSError` を送出します。

## ラージファイルのサポート

いくつかのオペレーティングシステム (AIX および Solaris が含まれます) は、 int および long を 32 ビット値とする C プログラムモデルで 2GB を超えるサイズのファイルのサポートを提供しています。このサポートは典型的には関連するサイズとオフセットの組合せを 64-bit 値として定義することで実現しています。このようなファイルは時にラージファイル (large files) と呼ばれます。

Python では、 `off_t` のサイズが long より大きく、かつ long long が少なくとも `off_t` と同じくらい大きなサイズであるとき、ラージファイルのサポートが有効になります。 この場合、ファイルのサイズ、オフセットおよび Python の通常整数型の範囲を超えるような値の表現には Python の長整数型が使われます。 このモードを有効にするのに、 configure で 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

## 注目すべきモジュールの内容

In addition to many functions described in the `os` module documentation, `posix` defines the following data item:

posix.environ

  インタプリタが起動したときの環境を表す文字列辞書です。キーと値は Unix ではバイト列、 Windows では文字列です。例えば、 `environ[b'HOME']` (Windows では `environ['HOME']`) はホームディレクトリのパス名で、 C の `getenv("HOME")` と同じ値です。

  この辞書を編集しても、 `execv()` 、 `popen()` 、 `system()` で渡された環境変数文字列には影響は与えません; 環境変数を変更したい場合は、 `environ` を `execve()` に渡すか、変数への代入文と export 文を `system()` や `popen()` に渡すコマンド文字列に追加してください。

  バージョン 3.2 で変更: Unix ではキーと値はバイト列になりました。

  注釈

  The `os` module provides an alternate implementation of `environ` which updates the environment on modification. Note also that updating `os.environ` will render this dictionary obsolete. Use of the `os` module version of this is recommended over direct access to the `posix` module.