FTOK
Section: Linux Programmer's Manual (3)
Updated: 2001-11-28
Index
JM Home Page
roff page
名前
ftok - パス名とプロジェクト識別子を System V IPC キーに変換する
書式
# include <sys/types.h>
# include <sys/ipc.h>
key_t ftok(const char *pathname, int proj_id);
説明
ftok()
関数は
pathname
で与えられたファイル (存在し、アクセス可能でなければならない)
のファイル名の識別情報 (identity) と、
proj_id
(0 であってはならない) の低位 8 ビットとを用いて、
key_t
型の System V IPC キーを生成する。
このキーは
msgget(2),
semget(2),
shmget(2)
などでの利用に適している。
同じファイルを示すあらゆるパス名と、同じ
proj_id
に対しては、結果の値は等しくなる。
ファイルが違ったり (この場合両者は同時に存在しているはず)、
proj_id
が異なると、返り値も異なる。
返り値
成功した場合は生成された
key_t
の値が返される。
失敗すると -1 が返され、エラーの内容が
errno
に書き込まれる。この内容はシステムコール
stat(2)
のものと同じである。
準拠
POSIX.1-2001.
注意
libc4 と libc5 (および SunOS 4.x) では、
プロトタイプは以下のようになっている。
-
key_t ftok(char *pathname, char proj_id);
現在では
proj_id
は
int
だが、依然として 8 ビットしか用いられない。
通常は ASCII キャラクタが
proj_id
に用いられる。
proj_id
が 0 のときの振る舞いが未定義になっているのは、これが理由である。
もちろん
key_t
が他と重ならないものであるかどうかは保証されない。
最善の場合の組み合わせを考えても、
proj_id
の 1 バイト、i ノード番号の低位 16 ビット、および
デバイス番号の低位 8 ビットなので、結果は 32 ビットに過ぎない。
例えば
/dev/hda1
と
/dev/sda1
それぞれにあるファイルに対して、衝突は容易に起こりうる。
関連項目
msgget(2),
semget(2),
shmget(2),
stat(2),
svipc(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:41 GMT, November 19, 2007