Мой процесс имеет доступ к общей памяти, которая уже создана. Указатель, прикрепленный к общей памяти, представляет собой структуру, содержащую указатель и 2 или 3 переменные.Общая память в C
например:
typedef struct _info_t{
int id;
char c;
}info_t;
typedef struct _details_t{
int buff_id;
info_t* info;
}details_t;
details_t* details = shmat(shmid,(void*)0,0);
printf("\n %d \n",details->info->id); // gives me a segmentation fault
Это не только C, это C * и * Linux (или, по крайней мере, Posix!). Поэтому, пожалуйста, добавьте еще теги ... –
'* details' определен, но' * details-> info' нет. – Dave
Дейв прав. Проблема в том, что вы не выделили место для 'details-> info', поэтому следующий разыгрыш' -> id' завершился неудачно. Это не имеет ничего общего с разделяемой памятью. – UncleO