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_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)  

この文書について

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

関連キーワード

ビット   ftok   キー   低位   System   番号   識別子   types   識別   identity   両者   同時   返り値   成功   用語   allbox   インターフェース   属性   Thread   safety   プロトタイプ   通常   キャラクター   未定義   理由

Linux マニュアル 一覧

関連するコマンド・関数

ffs.3   ffsl.3   ffsll.3   a64l.3   l64a.3   makedbm.8
 

Index

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

This document was created by man2html, using the manual pages.
Time: 04:39:05 GMT, October 11, 2026