对于uni分配,我需要创建最多10个文件名的循环列表,然后将它们存储在共享内存区域中,以便2个孩子进程可以读/写列表(使用信号量来控制访问)。麻烦的是,我是一个总C新手,我感到失落和绝望,因为它完全超出了我的深度。我需要一些帮助来填补我的知识。如何在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倍。如何将链接列表存储到共享内存区域 - 以及如何从共享内存区域访问它?
如果只有一个进程修改列表,而另一个进程只能读取(并且永远不会同时),那么您在答案底部突出显示的指针问题就不是什么问题了? – Ash 2010-11-24 05:41:51