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

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

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

**このモジュールを直接インポートしてはいけません。** その代わりに、こ
のインターフェースの *ポータブル* 版である "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" モジュール版を使う方が推奨され
     ています。
