FTOK

Section: Linux Programmer's Manual (3)
Updated: 2020-04-11
Index JM Home 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) のものと同じである。  

属性

この節で使用されている用語の説明については、 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/ に書かれている。

関連キーワード

proj, FTOK, ftok, semget, pathname, 属性, プロジェクト, pages, 低位, キー

Linux マニュアル 一覧

[man1] [man2] [man3] [man4] [man5] [man6] [man7] [man8]
[a] [b] [c] [d] [e] [f] [g] [h] [i] [j] [k] [l] [m] [n] [o] [p] [q] [r] [s] [t] [u] [v] [w] [x] [y] [z]

 

Index

名前
書式
説明
返り値
属性
準拠
注意
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 12:08:41 GMT, June 11, 2022