【发布时间】:2011-05-14 21:19:32
【问题描述】:
对于 uni 分配,我需要创建一个最多包含 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 指向第一个。我这样做的原因是我可以在没有迭代器的情况下简单地遍历列表(并且永远不必像使用数组一样检查列表的结尾)。
我也知道我需要使用shmget 来获取内存区域,我理解它,我传递shmget 一个键、一个大小和一个标志(我没有得到),它返回一个标识符int 的类型。
所以我的问题是 2 倍。如何将我的链表存储到共享内存区域 - 以及如何从共享内存区域访问它?
【问题讨论】:
标签: c unix shared-memory