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'(数组等)。我相信我只是在做一些愚蠢的事情,但对我来说文档有点混乱。任何帮助,将不胜感激。