Для универсального назначения мне нужно создать круговой список до 10 имен файлов, а затем сохранить их в общей области памяти, чтобы 2 дочерних процесса могли читать / записывать в список (используя семафор для управления доступом).).Беда в том, что я новичок в C и чувствую потерю и отчаяние, потому что это полностью из моей глубины.Мне нужна помощь в «заполнении дыр» в моих знаниях.
Сейчас я просто фокусируюсь на этом по одной проблеме за раз, и в настоящее время я только пытаюсь включить свой круговой список вОбласть общей памяти.
Пока что у меня есть:
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
ключ, размер и флаг (который я не получаю), и он возвращает идентификатор в виде типа int.
Так что мой вопрос в 2 раза.Как сохранить свой связанный список в области общей памяти и как получить к нему доступ из области общей памяти?