【问题标题】:shared memory (ipc)in linuxLinux中的共享内存(ipc)
【发布时间】:2025-12-25 16:35:07
【问题描述】:

共享内存意味着一个进程将创建一个其他进程可以访问的内存部分。

我的问题是:其他进程如何知道创建的共享内存shmid(即shmid=shmget(key-t ,size , permission);)?

【问题讨论】:

    标签: linux ipc shared-memory


    【解决方案1】:

    为了简化:创建共享内存的进程定义了名称和权限(登录用户的进程)。

    基本上你创建一个文件:

    file_descriptor = shm_open("/some.shared.memory", 
                       (O_CREAT | O_RDWR),
                       (S_IREAD | S_IWRITE))  
    

    或者如果它存在,你可以打开它:

    file_descriptor = shm_open("/some.shared.memory",
                       (O_CREAT | O_EXCL | O_RDWR),
                       (S_IREAD | S_IWRITE))
    

    因此,名称“/some.shared.memory”是您查找共享段的方式。 (注意标志)

    【讨论】:

      【解决方案2】:

      他们需要用同样的方式来推导出key_t;通常你使用ftok函数,双方使用相同的文件名和id值,所以他们最终得到相同的键。

      【讨论】: