\section{\module{posix} ---
         最も一般的な \POSIX{} システムコール群}

\declaremodule{builtin}{posix}
  \platform{Unix}
\modulesynopsis{最も一般的な \POSIX\ システムコール群 (通常は
\refmodule{os} モジュールを介して利用されます)。}


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

\strong{このモジュールを直接 import しないで下さい。} その代わりに、
移植性のあるインタフェースを提供している \refmodule{os} をインポート
してください。\UNIX では、 \refmodule{os} モジュールが提供する
インタフェースは \module{posix} の内容を内包しています。
非 \UNIX{} オペレーティングシステムでは \module{posix} モジュール
を使うことはできませんが、その部分的な機能セットは、たいてい
 \refmodule{os} インタフェースを介して利用することができます。
\refmodule{os} は、一度 import してしまえば \module{posix} の代わり
であることによるパフォーマンス上のペナルティは \emph{全くありません}。
その上、\refmodule{os} \refstmodindex{os} は \code{os.environ} の
内容が変更された際に自動的に \function{putenv()} を呼ぶなど、
いくつかの追加機能を提供しています。

以下の説明は非常に簡潔なものです; 詳細については、 \UNIX{}
マニュアルの (または \POSIX{}) ドキュメントの) 対応する項目を
参照してください。\var{path} で呼ばれる引数は文字列で与えられた
パス名を表します。

エラーは例外として報告されます; よくある例外は型エラーです。
一方、システムコールから報告されたエラーは以下に述べるように
\exception{error} (標準例外 \exception{OSError} と同義です) を送出します。


\subsection{ラージファイルのサポート \label{posix-large-files}}
\sectionauthor{Steve Clift}{clift@mail.anacapa.net}
\index{large files}
\index{file!large files}


いくつかのオペレーティングシステム (AIX, HPIX, Irix および Solaris
が含まれます) は、\ctype{int} および \ctype{long} を 32 ビット値と
する C プログラムモデルで 2Gb を超えるサイズのファイルのサポート
を提供しています。このサポートは典型的には 64 ビット値のオフセット
値と、そこからの相対サイズを定義することで実現しています。この
ようなファイルは時にラージファイル (\dfn{large files}) と呼ばれます。

Python では、\ctype{off_t} のサイズが \ctype{long} より大きく、
かつ \ctype{long long} 型を利用することができて、少なくとも 
\ctype{off_t} 型と同じくらい大きなサイズである場合、ラージファイルの
サポートが有効になります。この場合、ファイルのサイズ、オフセットおよび
Python の通常整数型の範囲を超えるような値の表現には Python の長整数型が
使われます。例えば、ラージファイルのサポートは Irix の最近のバージョン
では標準で有効ですが、Solaris 2.6 および 2.7 では、以下のように
する必要があります:

\begin{verbatim}
CFLAGS="`getconf LFS_CFLAGS`" OPT="-g -O2 $CFLAGS" \
        ./configure
\end{verbatim} % $ <-- bow to font-lock

On large-file-capable Linux systems, this might work:

\begin{verbatim}
CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
        ./configure
\end{verbatim} % $ <-- bow to font-lock


\subsection{モジュールの内容 \label{posix-contents}}

\module{posix} では以下のデータ項目を定義しています:

\begin{datadesc}{environ}
インタプリタが起動した時点の環境変数文字列を表現する辞書です。
例えば、\code{environ['HOME']} はホームディレクトリの
パス名で、C 言語の \code{getenv("HOME")} と等価です。

この辞書を変更しても、\function{execv()}、\function{popen()} または
\function{system()} などに渡される環境変数文字列には影響しません;
そうした環境を変更するする必要がある場合、\code{environ} を 
\function{execve()} に渡すか、\function{system()} または
\function{popen()} の命令文字列に変数の代入や export 文を
追加してください。

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

このモジュールのその他の内容は \refmodule{os} モジュールからのみの
アクセスになっています; 詳しい説明は\refmodule{os} モジュールの
ドキュメントを参照してください。
