当前位置: 首页 > news >正文

Linux:共享内存api使用

代码:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/un.h>

#include <sys/ipc.h>
#include <sys/shm.h>

int main(void *arg)
{
int shmid = -1;

shmid = shmget(0x0002, 256, 0644 | IPC_CREAT | IPC_EXCL);//获取内存分配的进程id
if (-1 == shmid)
{perror("create shm failed ...");return(-1);
}printf("create shm ok\n");char *buf = NULL;
buf = (char *)shmat(shmid, NULL, SHM_RND); //共享内存同进程关联,并获取共享内存文件描述符buf.
if ((char *)-1 == buf)
{perror("shmat failed ...");return(-1);
}memcpy(buf, "hello world", sizeof("hello world"));printf("buf is: %s\n", buf);getchar();  //暂停一下进程,回车键继续执行shmdt(buf);//shimid共享内存同进程脱离printf("finish  dt    \n");getchar();//暂停一下进程,回车键继续执行int ret = shmctl(shmid, IPC_RMID, NULL); //把shimid共享内存标志为即将删除,当操作过它的进程都退出时,系统会删除该共享内存
if ((void *)-1 == buf)
{perror("shmctl failed ...");return(-1);
}return 0;

}

结果:

在这里插入图片描述
注意shmdt(), shmctl(),两个函数执行后nattch的变化
在这里插入图片描述

http://www.lryc.cn/news/17837.html

相关文章:

  • android9.0 java静态库操作JNI实例 动态注册
  • 自定义复杂图片水印
  • 文章读后感——《人间清醒,内容为王》
  • 51单片机入门 - 驱动多位数码管
  • Java进击框架:Spring(一)
  • Java笔记(18)
  • 【免费教程】地下水环境监测技术规范HJ/T164-2020解读使用教程
  • Html 代码学习
  • 如何通过IP找到地址?
  • 业务单据堆积如山?如何提升会计做账效率?
  • 华为OD机试题,用 Java 解【VLAN 资源池】问题
  • 面试加分项:JVM 锁优化和逃逸分析详解
  • C++继承、构造函数和析构函数
  • Python如何实现异步并发之async(1)
  • 震撼!阿里首次开源 Java 10万字题库,Github仅一天星标就超60K
  • 十三、RESTful API
  • 路由器防火墙配置(14)
  • 灰狼算法优化VMD对时序信号分析python
  • 微服务架构中的多级缓存设计还有人不懂?
  • 【图神经网络 医学/药物/目标/分子/(结构/相互作用)预测】用于药物-目标相互作用预测的元集合(Metapath)异构图神经网络(MHGNN)
  • 《Java核心技术》笔记——第六章
  • 假设检验的基本思想
  • c语言机试练习
  • Python的PyQt框架的使用-资源文件夹的使用
  • 如何遍历HashMap
  • 11技术太卷我学APEX-数据加载
  • JVM记录
  • 盘点机器学习实战中最频繁使用的AutoML工具库
  • 50-Jenkins-Lockable Resources插件实现资源锁定
  • 测试员,如果未来5年你不想失业……你得学会自动化测试