名 前
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) の も の と 同 じ で あ る 。
属 性
マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 )
ftok() 関 数 は ス レ ッ ド セ ー フ で あ る 。
準 拠
POSIX.1−2001.
注 意
い く つ か の 古 い シ ス テ ム で は 、 プ ロ ト タ イ プ は 以 下 の よ う に な っ て い た 。
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)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。