Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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)  のものと同じである。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌─────────────────┬───────────────┬─────────┐
       │インターフェース属性      │
       ├─────────────────┼───────────────┼─────────┤
       │ftok()           │ Thread safety │ MT-Safe │
       └─────────────────┴───────────────┴─────────┘

準拠

       POSIX.1-2001, POSIX.1-2008.

注意

       いくつかの古いシステムでは、プロトタイプは以下のようになっていた。

           key_t ftok(char *pathname, char proj_id);

       現在では proj_idint だが、依然として 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)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。