FTOK(3)

名前
ftok - パス名とプロジェクト識別名を System V IPC キーに変換する

書式
# include <sys/types.h>
# include <sys/ipc.h>

key_t ftok ( char *pathname, char proj )

説明
この関数はアクセス可能なファイルのパス名とプロジェクト識別名 (project identifier) を key_t 型を持つ System V IPC キーに変換する。

返り値
成功した場合は変換された key_t の値が返される。 他の場合は -1 が返され、エラーの内容が errno に書き込まれる。この内容はシステムコール stat(2) のものと同じである。

バグ
key_t の値は以下のように生成される。まず pathname に対応するディスクファイルを stat して、 i-node 番号とファイルが所属しているファイルシステムのマイ ナーデバイス番号を得る。次に proj の値 (8 ビット) と i-node 番号の下位 16 ビット、マイナーデバイス 番号の 8 ビットを加えて key_t とする。 このアルゴリズムでは、キーの値が他と重ならないことが保証されない。実際 以下のような場合が考えられる。

•   名前が違っても、同じファイルにリンクしていれば同じキー値が生成される。

•   i-node 番号の下位 16 ビットしか使っていないので、別の i-node 番号 を持つファイル名とキー値が重なるかも知れない (可能性は小さいだろうが)。

•   デバイスのメジャー番号を比較していないので、複数のディスクからなる システムではキー値が衝突するかも知れない (可能性は小さいだろうが)。

関連項目
ipc(5), msgget(2), semget(2), shmget(2), stat(2)