35.1. "posix" --- 最も一般的な POSIX システムコール群
*****************************************************

======================================================================

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

**このモジュールを直接インポートしてはいけません。** その代わりに、こ
のインターフェースの *ポータブル* 版である "os" モジュールをインポート
してください。 Unix では、"os" モジュールは "posix" インターフェースの
スーパーセットを提供しています。非 Unix オペレーティングシステムでは、
"posix" モジュールは利用できませんが、その一部分は "os" インターフェー
スを通して常に利用可能です。一度 "os" をインポートし "posix" の代わり
にそれを使えば、パフォーマンス上の代償は *ありません* 。加えて "os" は
、 "os.environ" の要素が変更されたときに "putenv()" を呼び出すなどの追
加の機能も提供します。

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


35.1.1. ラージファイルのサポート
================================

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

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


35.1.2. 注目すべきモジュールの内容
==================================

"os" モジュールのドキュメントで説明されている多数の関数に加え、
"posix" では以下のデータ項目を定義しています:

posix.environ

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

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

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

   注釈: "os" モジュールでは、もう一つの "os.environ" 実装を提供して
     おり、 環境変数が変更された場合、その内容を更新するようになってい
     ます。 "environ" を更新した場合、この辞書は古い内容を表しているこ
     とにな ってしまうので、このことにも注意してください。 "posix" モ
     ジュール 版を直接アクセスするよりも、 "os" モジュール版を使う方が
     推奨され ています。
