Итак, я создаю программу, которая будет иметь несколько процессов, которым все должны получить доступ к узлу, который я определил. Поэтому я инициализирую память следующим образом:Как разделить кусок памяти по нескольким процессам с помощью shmget
sharedMemory = (node*)malloc(sizeof(node));//sharedMemory is a global node
sharedMemory->syskey = sys_key;//just a variable from a function
segment_id = shmget(sharedMemory->syskey, size, S_IRUSR | S_IWUSR | IPC_CREAT);
sharedMemory = (node*)shmat(segment_id, NULL, 0);
И это, кажется, идет хорошо. Однако мне потом нужно получить доступ к этой части памяти позже. Так что я пытался это сделать:
segment_id = shmget(sharedMemory->syskey, size, S_IRUSR | S_IWUSR | IPC_CREAT);
sharedMemory = (node*)shmat(segment_id, NULL, 0);
И затем используйте sharedMemory. Однако, когда я сделал это, все в sharedMemory, похоже, было сброшено до «null» (массивы и т. Д.). Я уверен, что я просто делаю что-то глупое, но документация немного сбивает меня с толку. Любая помощь будет оценена по достоинству.