使用shmget在进程共享内存

本文深入解析Linux进程间通信中共享内存的实现原理及应用。详细介绍了shmget、shmat、shmdt、shmctl等核心函数的功能与用法,特别强调了shmget函数在创建共享内存对象中的关键作用。同时,文章提供了内核配置需求,确保共享内存功能正常启用,避免运行时错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用于Linux进程通信(IPC Inter-Process-Communication)中,共享内存作为一种方便而且有效的手段, 我们在程序中经常看到。其中共享内存函数由shmget、shmat、shmdt、shmctl四个函数组成,其中shmget用来创建一个共享内存对象。

       #include <sys/ipc.h>
       #include <sys/shm.h>
       int shmget(key_t key, size_t size, int shmflg);
key: 标识符的规则, size:共享存储段的字节数, flag:读写的权限
返回值:成功返回共享存储的id,失败返回-1

使用之前在内核中要使能IP C, 如下几个选项必须要使能:

  CONFIG_SYSVIPC=y
  CONFIG_SYSVIPC_SYSCTL=y

要不, 在程序运行中会有如下的出错信息:

Unable to get shared memory segment(shmget)
shmid = -1, size = 32, size1 = 8192, Error 38

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值