在制作过程中,我有以下内容 说
* shared_ring是指向正在共享的数据结构(donut_ring)的指针。
int shmid, semid[3];
if((shmid = shmget (MEMKEY, sizeof(struct donut_ring),
IPC_CREAT | 0600)) == -1){
perror("shared get failed: ");
exit(1);
}
if((shared_ring = shmat (shmid, NULL, 0)) == (void *)-1){
perror("shared attach failed: ");
sig_handler(-1);
}
消费者和生产者程序假设在单独的文件中。
每个消费者如何找到生产者创建的共享内存ID ,并将该段附加到其地址空间?
我是否需要在使用者文件中再次调用shmat shmid,以及分叉的每个使用者进程?它会不会创建一个新的而不是使用那个?
答案 0 :(得分:0)
想出来,答案是肯定的。两个文件都需要这两个调用。