注意: このモジュールは、将来のリリースでは使われなくなるでしょう。 ロック操作は、より良く、移植性に富んだ fcntl.lockf() コールにより 提供されています。
このモジュールには、組み込みの file オブジェクトに比べて、いくつかの追加機能が 実装されています。特に、ファイルロック、ファイルフラグの制御、file オブジェクト を複製するための簡単なインターフェースが実装されています。 このモジュールには、新しい file オブジェクトである posixfile オブジェクトが 定義されています。このオブジェクトは、標準の file オブジェクトのメソッドと、 以下に示す追加メソッドを持っています。このモジュールは、ファイルロックのために fcntl.fcntl() を使うので、ある種の Unix 上でしか動作しません。
posixfile オブジェクトを作成するためには、posixfile モジュールの open() 関数を使用します。作成されたオブジェクトは、標準の file オブジェクトとだいたい同じように感じられます。
posixfile モジュールには、以下の定数が定義されています。
posixfile モジュールには、以下の関数が定義されています。
posixfile オブジェクトには、以下の追加メソッドが定義されています。
全てのメソッドは、要求が失敗すると IOError をあげます。
lock() メソッドのためのフォーマット文字は、以下のものを 意味しています。
フォーマット | 意味 |
---|---|
u | 指定された範囲のロックを解除 |
r | 指定部分の読み込みロックを要求 |
w | 指定部分の書き込みロックを要求 |
さらに、以下の修飾子をフォーマットに付加することができます。
修飾子 | 意味 | 注意 |
---|---|---|
| | ロックが許可されるまで待ちます | |
? | 要求したロックが最初に衝突した時のロックの情報を返します。ただし、 衝突が起こっていない場合は、None を返します。 | (1) |
Note:
(1) 返されるロックのフォーマットは、(mode, len, start, whence, pid) です。ここで、mode は、ロックのタイプを 表す文字('r' または 'w')です。この修飾子は問い合わせの目的で使用するだけで、 実際に要求が許可されることはありません。
flags() のためのフォーマット文字は、以下のものを意味しています。
フォーマット | 意味 |
---|---|
a | 追加フラグ |
c | 実行時クローズ(呼び出しプロセスでオープンしていたファイルを、サブ プロセスではクローズ状態にする)フラグ |
n | 遅延無しフラグ(非ブロックフラグとも呼ばれます) |
s | 同期フラグ |
さらに、以下の修飾子をフォーマットに付加することができます。
修飾子 | 意味 | 注意 |
---|---|---|
! | 指定したフラグを’オフ’にします。この修飾子を付けない場合はフラグを ’オン’にします。 | (1) |
= | フラグを置き換えます。この修飾子を付けない場合は’OR’演算が行われ ます。 | (1) |
? | 現在設定されているフラグを表す文字を返します。 | (2) |
注意:
(1) 修飾子 "!" と "=" は、どちらか一方しか指定できません。
(2) 返される文字列は、同じコールで変更されたフラグの変更後の値を表します。
例:
import posixfile file = posixfile.open('/tmp/test', 'w') file.lock('w|') ... file.lock('u') file.close()
guido@python.org