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

linux共享内存通信

基础共享内存通信示例

以下示例展示生产者-消费者模型,使用共享内存传递数据:

生产者程序(producer.c)
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <string.h>#define SHM_KEY 0x1234
#define SHM_SIZE 1024int main() {int shmid = shmget(SHM_KEY, SHM_SIZE, IPC_CREAT | 0666);if (shmid == -1) {perror("shmget");return 1;}char *shm_ptr = (char*)shmat(shmid, NULL, 0);if (shm_ptr == (void*)-1) {perror("shmat");return 1;}strcpy(shm_ptr, "Hello from producer!");printf("Producer wrote: %s\n", shm_ptr);shmdt(shm_ptr);return 0;
}
消费者程序(consumer.c)
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>#define SHM_KEY 0x1234
#define SHM_SIZE 1024int main() {int shmid = shmget(SHM_KEY, SHM_SIZE, 0666);if (shmid == -1) {perror("shmget");return 1;}char *shm_ptr = (char*)shmat(shmid, NULL, 0);if (shm_ptr == (void*)-1) {perror("shmat");return 1;}printf("Consumer read: %s\n", shm_ptr);shmdt(shm_ptr);shmctl(shmid, IPC_RMID, NULL); // 删除共享内存return 0;
}
编译与运行
# 编译
gcc producer.c -o producer
gcc consumer.c -o consumer# 运行生产者
./producer
# 输出: Producer wrote: Hello from producer!# 运行消费者
./consumer
# 输出: Consumer read: Hello from producer!

(通过 ipcs -m 查看共享内存)

相关文章:

  • 网络类型学习
  • react-native搭建开发环境过程记录
  • 循环队列的实现
  • ‌RAII 技术详解
  • 深入解析 Linux 系统中的动静态库:从原理到实践
  • blender 录课键位显示插件(图文傻瓜式安装)
  • 第二十五天 - Web安全防护 - WAF原理与实现 - 练习:请求过滤中间件
  • 第七章:7.2求方程a*x*x+b*x+c=0的根,用3个函数,分别求当:b*b-4*a*c大于0、等于0和小于0时的根并输出结果。从主函数输入a、b、c的值
  • Vue组件库开发实战:从0到1构建可复用的微前端模块
  • 33、单元测试实战练习题
  • 数理逻辑(Mathematical Logic)综论与跨学科应用
  • 算力云平台部署—AI数字人视频—未来之窗超算中心
  • 神经隐写术与量子加密:AI生成图像的隐蔽传输——突破数字水印新维度
  • 【算法】快速排序、归并排序(非递归版)
  • 【WPF】 自定义控件的自定义属性
  • git常用修改命令
  • DDD架构设计
  • 数据结构与算法学习导航
  • 【python】pysharm常用快捷键使用-(1)
  • Linux 常用命令总结
  • 国家发改委副主任谈民营经济促进法:以法治的稳定性增强发展的确定性
  • 中国难以承受高关税压力?外交部:任何外部冲击都改变不了中国经济基本面
  • 预告:央行等部门将发声,介绍“一揽子金融政策支持稳市场稳预期”有关情况
  • 山东滕州车祸致6人遇难,肇事司机已被刑事拘留
  • 《黎明的一切》:与正常世界脱轨后,我选择不再回去
  • 48岁黄世芳履新中国驻毛里求斯大使,曾在广西工作多年