云计算百科
云计算领域专业知识百科平台

System V IPC:shmid 与 semid 全称与命名规律

在 Linux System V 进程通信机制中,共享内存、信号量、消息队列是三大核心 IPC 资源,内核会为每一个创建的 IPC 资源分配唯一标识符,也就是我们代码中常见的 shmid、semid、msqid。三者命名格式高度统一,仅前缀不同,本文清晰拆解其英文全称、含义及命名规则,方便快速记忆与区分。

一、shmid(共享内存标识符)

完整英文全称:shared memory identifier

缩写拆解:

  • shm:取自 shared memory,代表系统共享内存资源

  • id:取自 identifier,意为唯一标识符

shmid 是调用 shmget() 函数创建或获取共享内存后,内核返回的整型唯一编号。所有后续共享内存操作,包括挂载、读写、卸载、删除,都需要依靠 shmid 定位目标共享内存资源,是操作共享内存的核心凭证。

二、semid(信号量集标识符)

完整英文全称:semaphore identifier

缩写拆解:

  • sem:取自 semaphore,代表信号量(信号灯)资源,用于进程、线程同步互斥

  • id:取自 identifier,意为唯一标识符

semid 是调用 semget() 函数创建或获取信号量集后得到的内核唯一标识。后续通过 semop()、semctl() 完成信号量的加减操作、状态修改、销毁等功能时,均需传入 semid 指定操作对象。

三、拓展:msqid(消息队列标识符)

为完善 System V IPC 知识体系,补充同类命名规则的消息队列标识符:

完整英文全称:message queue identifier

缩写拆解:msq(message queue 消息队列)+ id(标识符)

由 msgget() 函数返回,专门用于操作系统消息队列资源。

四、统一命名规律(核心记忆点)

Linux System V IPC 整套接口遵循极简统一的命名规范,是新手快速区分的关键:

  • 前缀区分资源类型:shm 对应共享内存、sem 对应信号量、msg 对应消息队列;

  • 后缀统一固定:所有 IPC 资源标识符均以 id 结尾,代表内核唯一标识;

  • 系统调用命名匹配:资源前缀 + get,即为创建/获取资源的函数名:shmget、semget、msgget。

  • 五、关键避坑说明

    新手编码时常出现低级错误:将 shmid、semid 变量名误写为 pid。二者完全无关:

    pid 是进程 ID,标识系统进程;

    shmid/semid/msqid 是 IPC 资源 ID,标识内核通信资源。

    变量名严禁混用,否则会导致程序逻辑错误。

    六、系统命令对应查看方式

    可通过系统命令直接查看对应 IPC 资源,印证标识符作用:

    • ipcs -m:查看所有共享内存(shmid)资源

    • ipcs -s:查看所有信号量(semid)资源

    • ipcrm:根据对应 ID 删除 IPC 资源

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » System V IPC:shmid 与 semid 全称与命名规律
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!