Как сохранить и извлечь структуру в общую область памяти в C

Для назначения uni мне нужно создать круговой список до 10 имен файлов, а затем сохраните их в общей области памяти, так что 2 дочерних процесса могут читать / писать в список (используя семафор для управления доступом). Проблема в том, что я полный новичок в Си, и я чувствую потерю и отчаяние, потому что это совершенно не для меня. Мне нужна помощь в «заполнении дыр» в моих знаниях.

Прямо сейчас я просто сосредотачиваюсь на одной проблеме за раз, и в настоящее время я только пытаюсь поместить свой круговой список в общую область памяти. .

На данный момент у меня есть:

typedef struct FILE
{
   struct FILE *f_link;  /* forward link for linked list */
   char name[255];       /* name of the file */

} FILE_entry;

Как моя структура, которая будет содержать ссылку на файл, который будет следующим (f_link). таким образом я могу просто вызвать -> f_link, чтобы получить следующий элемент в списке, и где 10-й элемент просто будет иметь f_link, направленный обратно на 1-й. Причина, по которой я это делаю, заключается в том, что я могу просто перемещаться по списку без итератора (и мне никогда не нужно проверять конец списка, как в случае с массивом).

Я также знаю, что мне нужно использовать shmget , чтобы получить область памяти, и я это понимаю, я передаю shmget ключ, размер и флаг (чего я не get) и возвращает идентификатор типа int.

Так что мой вопрос двоякий. Как сохранить свой связанный список В области общей памяти - и как получить к нему доступ ИЗ области общей памяти?

6
задан Nicholas Knight 24 November 2010 в 04:34
поделиться