8.1 組み込みモジュール posix
このモジュールは、標準のC言語とPOSIXにより規格化されている(まれにUnixのインター
フェースのように扱われる)、オペレーティングシステムの機能を使うためのインター
フェースを提供します。
このモジュールは、直接インポートしないでください。その代わりに、プラット
フォームに依存せず同じインターフェースを提供する os モジュールをイン
ポートしてください。Unixでは、osは posix インターフェースの
スーパーセットを提供します。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により定義されている
エラーコードの名前を含んでいるので参照してください。
例外がクラスの場合は、errnoとstrerrorの2つの属性を持って
います。前者はC言語のerrnoの値を、また後者は対応するstrerror()
からのエラーメッセージを持っています。
例外が文字列の場合は、その文字列は'os.error'です。これは、os
モジュールによって、より簡単なアクセス方法が提供されています。
posixモジュールには、以下のような関数と定数が定義されています。
- chdir (path)
-
カレントディレクトリをpathに変更します。
- chmod (path, mode)
-
pathのパーミッションモードを数値のmodeに変更します。
- chown (path, uid, gid)
-
pathのオーナー、グループIDを数値のuidとgidに変更します。
(MS-DOS上では無効)
- close (fd)
-
ファイル記述子fdの指すファイルをクローズします。
注意:この関数は、低レベルI/Oのために使用されることを前提としていて、
open()またはpipe()により返されるファイル記述子を指定しなけれ
ばなりません。組み込み関数open()、popen()、または
fdopen()により返された“ファイルオブジェクト”をクローズするためには、
そのオブジェクトのclose()メソッドを使用してください。
- dup (fd)
-
ファイル記述子fdの複製を返します。
- dup2 (fd, fd2)
-
可能であれば最初にファイル記述子fd2をクローズした後、fdを
fd2に複製します。
- 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に接続されたオープンされたファイルオブジェクトを
返します。引数modeとbufsizeは、組み込み関数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
に設定します。howが0の場合はファイルの先頭からの相対位置に、
また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に従ったモードを設定します。
デフォルトのmodeは0777(8進)で、カレントの umask の値が減算
されます。オープンしたファイルのファイル記述子を返します。
フラグとモードの値に関する説明は、Unix または C のランタイムドキュメントを
参照してください。フラグの定数(O_RDONLYやO_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_mode、
st_ino、
st_dev、
st_nlink、
st_uid、
st_gid、
st_size、
st_atime、
st_mtime、
st_ctime。
実装によっては、さらにいくつかのアイテムが末尾に追加される場合があります。
(MS-DOS上では、いくつかのアイテムにダミー値が設定されます。)
注意:標準モジュール stat には、
stat 構造体から情報を取り出す際に役立つ、関数と定数が定義されています。
- symlink (src, dst)
-
src を指す dst という名前のシンボリックリンクを作成します。
(シンボリックリンクの無いシステムでは、常に error をあげます。)
- system (command)
-
文字列で与えられた command をサブシェル中で実行させます。これは、標準のC関数
system()の呼び出すことにより実装されていて、この関数と同様の制限が
あります。posix.environ、sys.stdin を変更しても、実行させる
command の環境には反映されません。
戻り値は、プロセスの終了ステータスで、wait()に記述したフォーマットに
エンコードされたものです。
- tcgetpgrp (fd)
-
fd (open()により返される、オープンされたファイルのファイル
記述子)により指定された端末に関連したプロセスグループのグループIDを返します。
(MS-DOS上では無効)
- tcsetpgrp (fd, pg)
-
fd (open()により返される、オープンされたファイルのファイル
記述子)により指定された端末に関連したプロセスグループのグループ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.stdout、sys.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