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