При использовании разделяемой памяти, почему мы должны заботиться о создании ключа
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 Руководство по Unix IPC можно прочитать:
Как насчет этого
key
ерунды? Как мы его создаем? Ну, так как типkey_t
на самом деле просто along
, вы можете используйте любое количество, которое вы хотите. А вдруг вы скорректировали число и некоторые другие несвязанные жесткие коды программы то же число, но хочет другую очередь? Решение состоит в использованииftok()
функция, которая генерирует ключ из два аргумента.
Считая это, создается впечатление, что то, что нужно прикрепить к блоку с разделяемой памятью, - это ключ. Но это не так, не так ли?