C语言 是否需要在生产者和消费者文件中调用 shmat 和 shmget



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

  • 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,以及为每个分叉的消费者进程调用? 它不会创建一个新的而不是使用那个吗?

想通了,答案是肯定的。这两个调用在两个文件中都是必需的。

相关内容

最新更新