Я пытаюсь спроектировать/внедрить (циклическую) очередь (в C) в качестве общей памяти, чтобы ее можно было использовать между несколькими потоками/процессами.
Структура очереди следующая:
typedef struct _q {
int q_size;
int q_front;
int q_rear;
int *q_data;
}queue;
Который поддерживает следующие функции:
int empty_q(queue *q);
int display_q(queue *q);
int create_q(queue **q, int size);
int delete_q(queue **q);
int enqueue(queue *q, int data);
int dequeue(queue *q, int *data);
В соответствии с размером очереди, указанным пользователем, память для q_data будет выделена в create_q().
Вопрос: Как создать разделяемую память для этой очереди, используя системные функции, представленные в "sys/shm.h"? Любой фрагмент кода/пример для создания/присоединения/извлечения/удаления разделяемой памяти для структуры данных очереди с использованием shmget(), shmat(), shmctl() и т. д. был бы большим подспорьем.