Quel est le point d'avoir un key_t si ce qui sera la clé pour accéder à la mémoire partagée est la valeur de retour de shmget ()?

Lors de l'utilisation de la mémoire partagée, pourquoi devrions-nous nous préoccuper de la création d'une clé

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

dans le code suivant?

key_t key;
int shmid;

key = ftok("/home/beej/somefile3", 'R');
shmid = shmget(key, 1024, 0644 | IPC_CREAT);

De ce que je viens de comprendre, ce qui est nécessaire pour accéder à une donnée en mémoire partagée est la shmidpas la clé. Ou je me trompe? Si ce que nous avons besoin est la shmidqu'est-ce que le point n'est pas simplement la création d'une clé aléatoire à chaque fois?

Modifier

@Beej Guide d'Unix à l'IPC on peut lire:

À propos de cet key non-sens? Comment faire
nous en créer un? Eh bien, puisque le type
key_t est en fait juste un longvous pouvez
utiliser n'importe quel nombre que vous voulez. Mais que faire si
vous coder en dur le numéro
autre programme, le code en dur
même numéro, mais veut une autre file d'attente?
La solution est d'utiliser la ftok()
la fonction qui génère une clé de
deux arguments.

Cette lecture, il me donne l'impression que ce que l'on doit attacher à une mémoire partagée bloc est la clé. Mais ce n'est pas vrai, est-il?

source d'informationauteur devoured elysium