1
因此,我正在製作一個程序,該程序將具有多個進程,這些進程都需要訪問我已定義的結構'node'。所以我初始化內存如下:如何使用shmget跨多個進程共享一塊內存
sharedMemory = (node*)malloc(sizeof(node));//sharedMemory is a global node
sharedMemory->syskey = sys_key;//just a variable from a function
segment_id = shmget(sharedMemory->syskey, size, S_IRUSR | S_IWUSR | IPC_CREAT);
sharedMemory = (node*)shmat(segment_id, NULL, 0);
這似乎很好。不過,我以後需要訪問這塊內存。所以我試圖做的是:
segment_id = shmget(sharedMemory->syskey, size, S_IRUSR | S_IWUSR | IPC_CREAT);
sharedMemory = (node*)shmat(segment_id, NULL, 0);
然後使用sharedMemory。但是,當我這樣做時,sharedMemory中的所有內容似乎已被重置爲'null'(數組等)。我相信我只是在做一些愚蠢的事情,但對我來說文檔有點混亂。任何幫助,將不勝感激。