-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.
第一:
共享内存 shmdata
共享内存是进程间通信中最简单的方式之一。共享内存在各种进程间通信方式中具有最高的效率。因为系统内核没有对访问共享内存进行同步,您必须提供自己的同步措施。解决这些问题的常用方法是通过使用信号量进行同步。
使用 man 学习 shmget 等函数
1)如下图所示,使用命令“man 2 shmget”
2)如下图所示,注意一下相关的函数
3)接着介绍一下 semget 函数的用法。
函数 int shmget(key_t key, size_t size, int shmflg);
参数 key:建立新的共享内存对象
参数 size:新建立的内存大小
参数 shmflg:标识符
返回值:成功 shmget 返回一个共享内存标识符或创建一个共享内存对象,错误返回-1。
void *shmat(int shmid, const void *shmaddr, int shmflg)
参数 shmid:共享内存标识符
参数 shmaddr:指定共享内存出现在进程内存地址的什么位置,直接指定为 NULL 让内核自己决定一个合适的地址位置
参数 shmflg :SHM_RDONLY,为只读模式,其他为读写模式
返回值:成功返回共享的内存地址,否则返回-1。
int shmdt(const void *shmaddr)
参数 shmaddr:连接的共享内存的起始地址。
返回值:成功返回 0,错误返回-1。
int