IPC进程间通信(五)--共享内存

目录

共享内存

在内存中申请一块共享区域,进程就可以通过访问这块共同区域实现数据的读和写进而实现通信。

//共享内存的创建:
int shmget(key_t key, size_t size, int shmflg);//成功返回shmid;失败返回-1;
//shmflg: 0644 | IPC_CREAT | IPC_EXCL
//连接进程:
void *shmat(int shm_id, const void *shm_addr, int shmflg);//成功返回指向共享内存第一个字节的指针;失败返回-1;
//shm_addr:指向共享内存连接到当前进程中的地址位置,通常为空,表示让系统来选择共享内存的地址
//shm_flg:是一组标志位,通常位0;
//将共享内存分离出进程
int shmdt(const void *shmaddr);//成功返回0;失败返回-1;
//shmaddr:为shmat的返回值
//删除共享内存以及其他控制操作
int shmctl(int shm_id, int command, struct shmin_ds *buf);
//command:IPC_STAT(把shmid_ds结构中的数据设置为共享内存的当前关联值,即用共享内存的当前关联值覆盖shmid_ds的值) IPC_SET(如果进程有足够的权限,就把共享内存的当前关联值设置为shmid_ds结构中给出的值) IPC_RMID(删除共享内存)
//buf是一个结构指针,它指向共享内存模式和访问权限的结构
//shmid_ds结构至少包括以下成员:
/*struct shmid_ds
{
    uid_t shm_perm.uid;
    uid_t shm_perm.gid;
    mode_t shm_perm.mode;
}*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值