Как изменить общую память (shmget/shmat) в C?

У меня есть структура:

struct sdata {
    int x;
    int y;
    time_t time;
};

Я создаю общую память для структуры следующим образом:

size_t shmsize = sizeof(struct sdata);
shmid = shmget(IPC_PRIVATE, shmsize, IPC_CREAT | 0666);

Затем я обращаюсь к общей памяти следующим образом:

struct sdata *data = shmat(shared.shmid, (void *) 0, 0);
data->time = time(NULL); // function returns the current time

Мой вопрос довольно прост . Это правильный способ доступа/изменения общей памяти? Это лучший подход?

(Я использую семафоры System V для синхронизации, и я не включил этот код. Я просто хотел убедиться, что я обращаюсь к/ корректное изменение разделяемой памяти.)

5
задан bfresh 1 April 2012 в 19:30
поделиться