您需要在生产者和消费者文件中调用 shmat 和 shmget 吗?
Posted
技术标签:
【中文标题】您需要在生产者和消费者文件中调用 shmat 和 shmget 吗?【英文标题】:Do you need to call shmat and shmget in both producer and consumer files? 【发布时间】: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,并为每个分叉的消费者进程调用?它不会创建一个新的而不是使用一个吗?
【问题讨论】:
【参考方案1】:想通了,答案是肯定的。两个文件中都需要这两个调用。
【讨论】:
以上是关于您需要在生产者和消费者文件中调用 shmat 和 shmget 吗?的主要内容,如果未能解决你的问题,请参考以下文章
通过 Observable(RxJava) 使用 Kafka