С помощью C я пытаюсь настроить общую память.Мой код выглядит так:
key_t key = ftok("SomeString", 1);
static int *sharedval;
int shmid = shmget(key, sizeof(int), S_IRUSR | S_IWUSR); // less permissions
sharedval = (int *) shmat(shmid, NULL, 0);
*sharedval = 0;
Однако, как только я запускаю эту последнюю строку, я получаю ошибку сегментации.При отладке я могу напечатать «sharedval» и получить адрес памяти, предположительно место в памяти, которое я получил.Поэтому я бы предположил, что все, что мне нужно сделать, это использовать *sharedval
для оценки, но, видимо, нет.Как я должен читать из общей памяти?Толчок в правильном направлении был бы замечательным.Спасибо!
Редактировать:
Другой.anon.coward вывод:
$ ./a.out
ftok: No such file or directory
shmget: No such file or directory
Trying shmget with IPC_CREAT
shmget success
shmat success
Segmentation fault: 11