ftok() - プロセス間通信 (IPC) キーの生成

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <sys/ipc.h>

key_t ftok(const char *path, int id);

機能説明

ftok() 関数は、msgget()、semget()、および shmget() の以降の呼び出し で使用できるキーを、pathid に基づいて戻します。path 引数は、プロセスが stat() を実行できる既存ファイル のパス名でなければなりません。

ftok() 関数は、同じ id 値で呼び出されたとき、同じファイル を指定するすべてのパスに対して同じキー値を戻します。異なる id 値が指定されるか、または異なるファイルが指定された場 合は、異なるキーが戻されます。id の下位 8 ビットのみが有効で、ゼロ以外でなければなりません。

戻り値

ftok() は、正常終了時にはキーを戻します。

正常に実行されなかった場合、ftok() は -1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
EACCES
パス接頭部のコンポーネントに対する検索許可が拒否されます。
EINVAL
id の下位 8 ビットがゼロです。
ELOOP
path の解析中に検出されたシンボリック・リンクが多すぎます。
ENAMETOOLONG
次のエラー条件のいずれかが存在しています。
  • path 引数の長さが PATH_MAX を超えているか、またはパス名コンポーネントが NAME_MAX より長い。
  • シンボリック・リンクのパス名解析 で、長さが PATH_MAX を超える中間結果を作成しました。
ENOENT
path のコンポーネントが既存ファイルの名前を指定していないか、または path が空ストリングです。
ENOTDIR
パス接頭部のコンポーネントがディレクトリーではありません。

関連情報