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