你需要在生产者和消费者文件中调用shmat和shmget吗?

时间:2013-09-22 17:42:07

标签: c shared-memory producer-consumer

在制作过程中,我有以下内容 说

  • 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 个答案:

答案 0 :(得分:0)

想出来,答案是肯定的。两个文件都需要这两个调用。