【发布时间】:2013-09-22 17:42:07
【问题描述】:
在生产者过程中,我有以下。
说
- MEMKEY 是 key_t 234500,并且
-
*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,并为每个分叉的消费者进程调用?它不会创建一个新的而不是使用一个吗?
【问题讨论】:
标签: c shared-memory producer-consumer