"posix" --- The most common POSIX system calls
**********************************************

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

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

利用可能な環境: Unix。

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

エラーは例外として報告されます; よくある例外は型エラーです。一方、シス
テムコールから報告されたエラーは以下に述べるように "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


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

"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" モジュール版を使う方が推奨され
     ています。
