對於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