8.1 組み込みモジュール posix

 

このモジュールは、標準のC言語とPOSIXにより規格化されている(まれにUnixのインター フェースのように扱われる)、オペレーティングシステムの機能を使うためのインター フェースを提供します。

このモジュールは、直接インポートしないでください。その代わりに、プラット フォームに依存せず同じインターフェースを提供する os モジュールをイン ポートしてください。Unixでは、osposix インターフェースの スーパーセットを提供します。Unix以外のOSでは posix は使用できませんが、 os インターフェースを通して必ず別のサブセットが使用できるようになって います。一度osをインポートすると、posixの代わりに使用しても パフォーマンスが劣るということはありません。さらに、osは、いくつかの 付加的な機能も提供しています。例えば、os.environのエントリが変更された 時に、自動的にputenv()を呼び出すような機能です。  

以下の記述は、たいへん簡潔なものです。さらに詳しい情報については、対応するUnixの マニュアル(またはPOSIXのドキュメント)を参照してください。pathという名前 の引数は、文字列で与えられたパス名を参照します。

エラーは、例外として報告されます。入力エラーに対しては、通常の例外があげられ ます。一方、システムコールにより報告されたエラーは、以下に示すerrorを あげます。

posixモジュールには、以下のようなデータ項目が定義されています。

environ
インタプリタが起動された時の環境変数の内容を、文字列で保持するディクショナリ。 例えば、posix.environ['HOME']は、ホームディレクトリのパス名を表します。 これは、C言語のgetenv("HOME")と同じです。

このディクショナリを変更しても、execv()popen()、および system()に渡される環境変数には影響を与えません。環境変数を変える必要が ある場合には、execve()environを渡すか、または環境変数を アサインし、それをエキスポートする文をsystem()popen()に渡す コマンドに付加します。

このモジュールをosを通して使用している場合(そうすべきです。上記イン トロダクションを参照してください。)は、environはマッピングオブジェクト です。これは、その中の項目が変更された時に必ずputenv()が自動的に呼び 出されること以外は、ほとんどディクショナリと同じです。 changed.

error
この例外は、POSIX関数がPOSIX関連のエラーを返した時にあげられます。(ただし、 引数のタイプが正しくない場合にはあげられません。)この時、例外と共に返される 値は、errnoから得られる数値のエラーコードと、C関数perror()で 表示される対応するエラーメッセージのペアーです。 モジュールerrno は、OSにより定義されている エラーコードの名前を含んでいるので参照してください。

例外がクラスの場合は、errnostrerrorの2つの属性を持って います。前者はC言語のerrnoの値を、また後者は対応するstrerror() からのエラーメッセージを持っています。

例外が文字列の場合は、その文字列は'os.error'です。これは、os モジュールによって、より簡単なアクセス方法が提供されています。

posixモジュールには、以下のような関数と定数が定義されています。

chdir (path)
カレントディレクトリをpathに変更します。

chmod (path, mode)
pathのパーミッションモードを数値のmodeに変更します。

chown (path, uid, gid)
pathのオーナー、グループIDを数値のuidgidに変更します。 (MS-DOS上では無効)

close (fd)
ファイル記述子fdの指すファイルをクローズします。

注意:この関数は、低レベルI/Oのために使用されることを前提としていて、 open()またはpipe()により返されるファイル記述子を指定しなけれ ばなりません。組み込み関数open()popen()、または fdopen()により返された“ファイルオブジェクト”をクローズするためには、 そのオブジェクトのclose()メソッドを使用してください。

dup (fd)
ファイル記述子fdの複製を返します。

dup2 (fd, fd2)
可能であれば最初にファイル記述子fd2をクローズした後、fdfd2に複製します。

execv (path, args)
実行可能ファイルpathを引数リストargsを渡して起動し、現在の プロセス(即ち、Pythonインタプリタ)に置き換えます。引数リストは、文字列の タプルまたはリストです。(MS-DOS上では無効)

execve (path, args, env)
実行可能ファイルpathを引数リストargsと環境変数envを 渡して起動し、現在のプロセス(即ち、Pythonインタプリタ)に置き換えます。 引数リストは、文字列のタプルまたはリストです。環境変数は、文字列と文字列を マッピングしたディクショナリでなければなりません。(MS-DOS上では無効)

_exit (n)
クリーンアップハンドラ(stdioバッファのフラッシュなど)をコールせず、 ステータスnでプロセスを終了させます。(MS-DOS上では無効)

注意:プロセスを終了させる通常の方法は、sys.exit(n)を使用する ことです。一般的には、fork()による子プロセスでのみ_exit()を 使用すべきです。

fdopen (fd[, mode[, bufsize]])
ファイル記述子fdに接続されたオープンされたファイルオブジェクトを 返します。引数modebufsizeは、組み込み関数open()の 対応する引数と同じものを指します。

fork ()
子プロセスを生成します。子プロセス内では0を返し、親プロセス内では子プロセスの プロセスIDを返します。(MS-DOS上では無効)

fstat (fd)
stat()と同様に、ファイル記述子fdの状態を返します。

ftruncate (fd, length)
ファイル記述子fdに対応するファイルを先頭から切り取り、そのサイズを 最大lengthバイトにします。

getcwd ()
カレントディレクトリを表す文字列を返します。

getegid ()
カレントプロセスの実効グループIDを返します。(MS-DOS上では無効)

geteuid ()
カレントプロセスの実効ユーザIDを返します。(MS-DOS上では無効)

getgid ()
カレントプロセスのグループIDを返します。(MS-DOS上では無効)

getpgrp ()
カレントプロセスのプロセスグループIDを返します。(MS-DOS上では無効)

getpid ()
カレントプロセスのプロセスIDを返します。(MS-DOS上では無効)

getppid ()
親プロセスのプロセスIDを返します。(MS-DOS上では無効)

getuid ()
カレントプロセスのユーザIDを返します。(MS-DOS上では無効)

kill (pid, sig)
pidのプロセスにシグナルsigを送ります。(MS-DOS上では無効)

link (src, dst)
srcを指す、dstという名称のハードリンクを作成します。 (MS-DOS上では無効)

listdir (path)
指定ディレクトリ内のファイルの名前を含んだリストを返します。 リストは、任意の順序になります。また、ディレクトリ内に存在していても、特種 ファイル('.''..'など)はリストには含まれません。

lseek (fd, pos, how)
ファイル記述子fdの現在位置を、howにより修飾される位置pos に設定します。how0の場合はファイルの先頭からの相対位置に、 また1の場合は現在位置からの相対位置に、さらに2の場合は ファイルの末尾からの相対位置に現在位置は設定されます。

lstat (path)
stat()と同様ですが、シンボリックリンクの指す先は参照しません。 (シンボリックリンクの無いシステムでは、stat()と同じものとなります。)

mkfifo (path[, mode])
modeで指定したモード、またpathの名称の FIFO(POSIX 名前付き パイプ)を作成します。デフォルトのモードは、0666(8進)です。 指定したモードから、カレントの umask の値が減算されます。(MS-DOS上では無効)

FIFO はパイプで、通常のファイルと同様にアクセスすることができます。FIFO は、 それが削除される(例えば、os.unlink()によって)まで存在します。 一般的にFIFO は、“サーバ”プロセスが読み取りのためにそれをオープンし、 “クライアント”プロセスが書き込みのためにオープンする、というように クライアントとサーバとの間の接点として使用されます。 mkfifo()は、FIFO をオープンしないことに注意してください。これは、 ただ接点を作成するだけです。

mkdir (path[, mode])
modeで指定したモード、またpathの名称のディレクトリを作成します。 デフォルトのモードは、0777(8進)です。modeを無視するシステム もあります。これを使用する場合、指定したモードから、カレントの umask の値が 減算されます。

nice (increment)
プロセスの優先順位にincrementを加えます。新しい優先順位を返します。 (MS-DOS上では無効)

open (file, flags[, mode])
ファイルfileをオープンし、flagsに従った様々なフラグと可能であれば modeに従ったモードを設定します。 デフォルトのmode0777(8進)で、カレントの umask の値が減算 されます。オープンしたファイルのファイル記述子を返します。

フラグとモードの値に関する説明は、Unix または C のランタイムドキュメントを 参照してください。フラグの定数(O_RDONLYO_WRONLYのような) は、このモジュールに定義されています。(以降を参照してください。)

注意:この関数は低レベル I/O のためのもので、通常は、組み込み関数open() を使用してください。この関数は、read()write()メソッド(その 他多くのメソッド)を持った“file オブジェクト”を返します。

pipe ()
パイプを作成します。読み取り、書き込みのどちらにも使用可能なファイル記述子の ペア(r,w)を返します。(MS-DOS上では無効)

plock (op)
プログラムのセグメントをメモリ内にロックします。opの値 (<sys/lock.h>に定義されています)により、どのセグメントがロック されるかが決まります。(MS-DOS上では無効)

popen (command[, mode[, bufsize]])
commandへの、またはcommandからのパイプをオープンします。戻り値は、 パイプに接続されたオープン済みの file オブジェクトです。パイプに対して読み取り、 または書き込みのどちらが可能であるかは、mode'r'(デフォルト) であるか'w'であるかに依存します。 引数bufsizeは、組み込み関数open()の対応する引数と同じ意味を 持っています。command の終了ステータス(wait()に記述したフォーマットに エンコードされたもの)は、file オブジェクトのclose()メソッドの戻り値 として取得することができます。(MS-DOS上では無効)

putenv (varname, value)
 varnameの名前の環境変数を、指定された 文字列valueに設定します。この変更された環境は、os.system()os.popen()os.fork()、およびos.execv()により 起動されたサブプロセスに影響します。(全てのシステムで実装されてはいません。)

putenv()がサポートされている場合、os.environの中のアイテム への値の割り当ては、対応するputenv()コールに自動的に変換されます。 しかし、putenv()の呼び出しによって、os.environは更新されま せん。従って、実際にはos.environの中のアイテムへの値の割り当ての方が 望ましいということになります。

strerror (code)
codeで指定したエラーコードに対応するエラーメッセージを返します。

read (fd, n)
最大nバイトのデータを、ファイル記述子fdのファイルから読み込み ます。読み込んだバイト数の string を返します。

注意:この関数は低レベル I/O のためのもので、open()または pipe()により返されたファイル記述子に対して実行させます。 組み込み関数open()popen()fdopen()により返される “file オブジェクト”、またはsys.stdinを読み込む時には、それらの メソッドread()またはreadline()を使用してください。

readlink (path)
シンボリックリンクが指すパスを表す文字列を返します。(シンボリックリンクの 無いシステムでは、常にerrorをあげます。)

remove (path)
ファイルpathを削除します。ディレクトリを削除するためのrmdir() は、以下を参照してください。これは、後述のunlink()関数と同じものです。

rename (src, dst)
ファイルまたはディレクトリ名を、srcからdstに変更します。

rmdir (path)
ディレクトリpathを削除します。

setgid (gid)
カレントプロセスのグループIDを設定します。(MS-DOS上では無効)

setpgrp ()
システムコール setpgrp() または setpgrp(0,0) のうちの、 システムに実装されているものを呼び出します。セマンティクスについては、 Unixマニュアルを参照してください。(MS-DOS上では無効)

setpgid (pid, pgrp)
システムコール setpgid() を呼び出します。セマンティクスについては、 Unixマニュアルを参照してください。(MS-DOS上では無効)

setsid ()
システムコール setsid() を呼び出します。セマンティクスについては、 Unixマニュアルを参照してください。(MS-DOS上では無効)

setuid (uid)
カレントプロセスのユーザIDを設定します。(MS-DOS上では無効)

stat (path)
与えられたパスで、stat() システムコールを実行します。戻り値は、 少なくとも10個の整数で構成されるタプルです。それぞれの整数は、stat 構造体の最も重要(かつ移植可能)なメンバーで、次のような順序になります。 st_modest_inost_devst_nlinkst_uidst_gidst_sizest_atimest_mtimest_ctime。 実装によっては、さらにいくつかのアイテムが末尾に追加される場合があります。 (MS-DOS上では、いくつかのアイテムにダミー値が設定されます。)

注意:標準モジュール stat  には、 stat 構造体から情報を取り出す際に役立つ、関数と定数が定義されています。

symlink (src, dst)
src を指す dst という名前のシンボリックリンクを作成します。 (シンボリックリンクの無いシステムでは、常に error をあげます。)

system (command)
文字列で与えられた command をサブシェル中で実行させます。これは、標準のC関数 system()の呼び出すことにより実装されていて、この関数と同様の制限が あります。posix.environsys.stdin を変更しても、実行させる command の環境には反映されません。 戻り値は、プロセスの終了ステータスで、wait()に記述したフォーマットに エンコードされたものです。

tcgetpgrp (fd)
fdopen()により返される、オープンされたファイルのファイル 記述子)により指定された端末に関連したプロセスグループのグループIDを返します。 (MS-DOS上では無効)

tcsetpgrp (fd, pg)
fdopen()により返される、オープンされたファイルのファイル 記述子)により指定された端末に関連したプロセスグループのグループIDを pg に設定します。 (MS-DOS上では無効)

times ()
CPU の使用時間などを秒単位で示す、5つの浮動小数点数で構成されるタプルを 返します。タプルの各アイテムは先頭から順に、ユーザ時間、システム時間、 子プロセスのユーザ時間、子プロセスのシステム時間、および過去のある時点からの 経過時間を表します。Unix の times(2) のマニュアルページを参照して ください。(MS-DOS上では無効)

umask (mask)
カレントの umask を設定し、設定前の umask の値を返します。 (MS-DOS上では無効)

uname ()
使用しているOSの情報を含んだ、5つの構成要素を持つタプルを返します。このタプルは 5つの文字列で構成され、それぞれ (システム名ノード名システムリリースシステムバージョンハードウエア名) を表します。システムによっては、ノード名は先頭の8文字のみ、または主要な構成要素 のみが取り出される場合があります。ホスト名を取り出すより良い方法は、 socket.gethostname()  または socket.gethostbyaddr(socket.gethostname())   を使うことです。 (MS-DOS、また古い Unix 上では無効)

unlink (path)
ファイル path を削除します。これは、remove と同じ機能で、 unlink という名前は、Unix での伝統的な名前です。

utime (path, (atime, mtime))
指定ファイルのアクセス時間、更新時間を与えられた値に設定します。(2つ目の引数 は2つのアイテムを持つタプルです。)

wait ()
子プロセスの終了を待ち、プロセスIDと終了ステータスを含んだタプルを返します。 終了ステータスは16ビットの数値で、下位バイトはプロセス終了時に送られたシグナル 番号、上位バイトは終了ステータス(シグナル番号が0の場合のみ)です。下位バイトの 上位ビットは、コアファイルが作成された時にセットされます。(MS-DOS上では無効)

waitpid (pid, options)
指定されたプロセスIDの子プロセスの終了を待ち、そのプロセスIDと終了ステータス (wait()の場合と同様にエンコードされたもの)を含んだタプルを返します。 呼び出しのセマンティクスは、整数値 options によって決まり、通常の操作を 行う場合には0を指定すべきです。(waitpid()をサポートしていない システムでは、常に error をあげます。MS-DOS上では無効です。)

write (fd, str)
文字列 str をファイル記述子 fd のファイルに書き込みます。 実際に書き込まれたバイト数が返されます。

注意:この関数は低レベル I/O のためのもので、open()または pipe()により返されたファイル記述子に対して実行させます。 組み込み関数open()popen()fdopen()により返される “file オブジェクト”、またはsys.stdoutsys.stderr に対して 書き込みを行う場合には、それらのメソッドwrite()を使用してください。

WNOHANG
子プロセスのステータスが直ちに取得できない場合に、ハングすることを避けるための waitpid() のオプションです。

O_RDONLY
O_WRONLY
O_RDWR
O_NDELAY
O_NONBLOCK
O_APPEND
O_DSYNC
O_RSYNC
O_SYNC
O_NOCTTY
O_CREAT
O_EXCL
O_TRUNC
open() 関数への引数 flag のためのオプションです。これらは、 ビット単位のOR演算にとり複数のものを使用することができます。

guido@python.org