共享内存
2021/11/6 7:13:26
本文主要是介绍共享内存,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
共享内存-进程间通信
基本流程
- 创建/打开 一块共享内存空间
- 将共享内存映射到用户进程空间
- 操作
- 解除映射
- 销毁共享内存
创建共享内存源码
#include <stdio.h> #include <sys/shm.h> #include <unistd.h> #include <string.h> int main() { key_t key; // 用于打开指定的共享内存 int shm_id; // 共享内存id char *p; // 用于映射共享内存到进程空间 key = ftok("/dev/null", 0); shm_id = shmget(key, 6, IPC_CREAT|0666); p = (char *)shmat(shm_id, NULL, 0); memset(p, 'A', 6); shmdt(p); return 0; }
获取共享内存
#include <stdio.h> #include <sys/shm.h> #include <unistd.h> #include <string.h> int main() { key_t key; // 用于打开指定的共享内存 int shm_id; // 共享内存id char *p; // 用于映射共享内存到进程空间 key = ftok("/dev/null", 0); shm_id = shmget(key, 6, 0666); p = (char *)shmat(shm_id, NULL, 0); printf("%c %c %c %c %c %c\n", p[0], p[1], p[2], p[3], p[4], p[5]); shmdt(p); shmctl(shm_id, IPC_RMID, 0); return 0; }
这篇关于共享内存的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器