lockf - ライブラリコールの説明 - Linux コマンド集 一覧表
- 名前
- 書式
- 説明
- 返り値
- エラー
- 準拠
- 関連項目
名前
lockf - 開いているファイルに対して POSIX ロックを適用・テスト・解除する。
書式
#include <unistd.h>
int lockf(int
fd
, int
cmd
, off_t
len
);
説明
開いているファイルのセクションに対して、
POSIX ロックの適用・テスト・解除をする。
ファイルは
fd
で指定される。
これは書き込みのためにオープンしたファイルディスクリプタである。
アクションは
cmd
で指定される。
pos
を現在のファイル位置とすると、
len
が正の場合、セクションはバイト位置
pos
..
pos
+
len
-1である。
len
が負の場合、セクションはバイト位置
pos
-
len
..
pos
-1である。
len
が 0 の場合、セクションは現在のファイル位置から無限大までとなる
(つまり現在の、あるいは変更された場合は将来の、ファイル終端位置まで)。
どの場合においても、セクションは以前のファイル終端よりも拡大されうる。
Linux では、この関数は単に
fcntl
(2) へのインターフェースである。
(一般には、
lockf
()と
fcntl
()の関係は指定されていない。)
有効なオプションを以下に挙げる。
-
F_LOCK
-
ファイルの指定されたセクションに排他ロックを設定する。
そのセクション (の一部) が既にロックされていた場合、
前のロックが解除されるまで関数の呼び出しがブロックされる。
このセクションが前にロックされているセクションと重なった場合、
2 つのセクションは結合される。
ロックを保持しているプロセスが、
そのファイルのファイルディスクリプタをクローズすると、
ファイルロックは解放される。
子プロセスはロックを継承しない。
-
F_TLOCK
-
F_LOCK
と同様であるが、ファイルが既にロックされている場合、
関数の呼び出しはブロックを行わずにエラーを返す。
-
F_ULOCK
-
ファイルの指定されたセクションのロックを解除する。
これによりロックされたセクションが 2 つに分割されるかもしれない。
-
F_TEST
-
次のようにロックのテストをする。
指定されたセクションがロックされていないか、
このプロセスによりロックされている場合、0 を返す。
他のプロセスがロックを保持している場合、-1 を返し、
errno
を
EAGAIN
(いくつかの他のシステムでは
EACCES
)に設定する。
返り値
成功した場合、0 が返される。
エラーの場合、-1 が返され、
errno
がエラーに対応した値に設定される。
エラー
-
EACCES
もしくは
EAGAIN
-
ファイルがロックされて、
F_TLOCK
または
F_TEST
フラグが選択されている。
または、ファイルが他のプロセスによりメモリーマップされているために、
操作が禁止されている。
-
EBADF
-
fd
が開いているファイルのディスクリプタではない。
-
EDEADLK
-
コマンドが
T_LOCK
であり、このロック操作がデッドロックを引き起こしている。
-
EINVAL
-
fd
に無効な操作が指定された。
-
ENOLCK
-
非常に多くのセグメントロックが開かれ、ロックテーブルが溢れた。
準拠
関連項目
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする