进程间通讯(四)共享内存

本文介绍了Linux系统中的共享内存机制,包括共享内存的概念、定义、具体操作如shmget、shmat、shmdt和shmctl函数的使用,以及在实际应用中需要注意的同步控制问题。共享内存是一种高效的进程间通信方式,允许不相关进程访问同一逻辑内存,通过共享内存标识符进行访问和管理。
摘要由CSDN通过智能技术生成

一、什么是共享内存

    共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址。


二、定义

#include<sys/shm.h>

 

int shmget(key_t key, size_t size, int shmflg); 

void *shmat(int shm_id, const void *shm_addr, int shmflg);

int shmdt(const void *shmaddr);

int shmctl(int shm_id, int command, struct shmid_ds *buf);

 

三、具体操作

(1)创建共享内存函数shmget

int shmget(key_t key, size_t size, int shmflg); 

与信号量的semget函数一样,程序需要提供一个参数key(非0整数),它有效地为共享内存段命名,shmget函数成功时返回一个与key相关的共享内存标识符(非负整数),用于后续的共享内存函数。调用失败返回-1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值