ftok
Section: C Library Functions (3)
Updated: 2026-02-08
Index
JM Home Page
roff page
名前
ftok - パス名とプロジェクト識別子を System V IPC キーに変換する
ライブラリ
標準 C ライブラリ (libc,~-lc)
書式
#include <sys/ipc.h>
key_t ftok(const char *path, int proj_id);
説明
The ftok() function uses the identity of the file named by the given
path (which must refer to an existing, accessible file) and the least
significant 8 bits of proj_id (which must be nonzero) to generate a
key_t type System V IPC key, suitable for use with msgget(2),
semget(2), or shmget(2).
同じファイルを示すあらゆるパス名と、同じ proj_id に対しては、結果の値は等しくなる。 ファイルが違ったり
(この場合両者は同時に存在しているはず)、 proj_id が異なると、返り値も異なる。
返り値
成功した場合は生成された key_t の値が返される。 失敗すると -1 が返され、エラーの内容が errno
に書き込まれる。この内容はシステムコール stat(2) のものと同じである。
属性
この節で使用されている用語の説明については、 attributes(7) を参照。
| インターフェース | 属性 | 値
|
|
ftok()
| Thread safety | MT-Safe
|
標準規格
POSIX.1-2008.
歴史
POSIX.1-2001.
注意
いくつかの古いシステムでは、プロトタイプは以下のようになっていた。
key_t ftok(char *path, 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 それぞれにあるファイルに対して、衝突は容易に起こりうる。
例
semget(2) を参照。
関連項目
msgget(2), semget(2), shmget(2), stat(2), sysvipc(7)
Index
- 名前
-
- ライブラリ
-
- 書式
-
- 説明
-
- 返り値
-
- 属性
-
- 標準規格
-
- 歴史
-
- 注意
-
- 例
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.