目次

前のトピックへ

35. Unix 固有のサービス

次のトピックへ

35.2. pwd — パスワードデータベースへのアクセスを提供する

このページ

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

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

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

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

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

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

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

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

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

ノート

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