共有メモリを使用する場合、キーの作成を気にする必要があるのはなぜですか
key_t ftok(const char *path, int id);
次のコードで?
key_t key;
int shmid;
key = ftok("/home/beej/somefile3", 'R');
shmid = shmget(key, 1024, 0644 | IPC_CREAT);
私が理解したことから、特定の共有メモリにアクセスするために必要なのはshmid
、キーではなく です。それとも私が間違っていますか?必要なshmid
ものが .
編集
@ Beej's Guide to Unix IPCを読むことができます:
この
key
ナンセンスはどうですか?どのように作成しますか?タイプkey_t
は実際にはただの であるためlong
、任意の数値を使用できます。しかし、番号をハードコードし、別の無関係なプログラムが同じ番号をハードコードしたが、別のキューが必要な場合はどうなるでしょうか? 解決策はftok()
、2 つの引数からキーを生成する関数を使用することです。
これを読むと、共有メモリブロックに何を付けるかが鍵だという印象を受けます。しかし、これは真実ではありませんね。