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

北京网站建设1000zhu建站之星模板怎么设置

北京网站建设1000zhu,建站之星模板怎么设置,wordpress 投稿审核,做哪方面的网站场景&#xff1a;一个简单的 智能家居温度监控系统 的共享内存应用实例&#xff0c;模拟多个传感器进程写入数据、一个显示进程读取数据。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/shm.h&…

场景:一个简单的 智能家居温度监控系统 的共享内存应用实例,模拟多个传感器进程写入数据、一个显示进程读取数据。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/shm.h>
#include <time.h>#define SHM_KEY 0x1234// 共享内存数据结构(存储温度数据)
typedef struct {float living_room_temp;  // 客厅温度float bedroom_temp;      // 卧室温度int update_flag;         // 数据更新标志(0=未更新 1=已更新)
} temp_data;// 传感器进程(写入数据)
void sensor_process(const char *room_name) {int shmid = shmget(SHM_KEY, sizeof(temp_data), 0666);temp_data *shm = (temp_data*)shmat(shmid, NULL, 0);srand(time(NULL) + getpid()); // 随机种子while(1) {float temp = 20.0 + (rand() % 100)/10.0; // 生成20.0~30.0的随机温度if(strcmp(room_name, "living_room") == 0) {shm->living_room_temp = temp;} else {shm->bedroom_temp = temp;}shm->update_flag = 1; // 标记数据已更新sleep(2); // 每2秒更新一次}
}// 显示进程(读取数据)
void display_process() {int shmid = shmget(SHM_KEY, sizeof(temp_data), IPC_CREAT | 0666);temp_data *shm = (temp_data*)shmat(shmid, NULL, 0);while(1) {if(shm->update_flag) {printf("\n=== 家庭温度监控 ===\n");printf("客厅: %.1f°C\n", shm->living_room_temp);printf("卧室: %.1f°C\n", shm->bedroom_temp);shm->update_flag = 0; // 重置标志位}sleep(1); // 每秒检查一次}
}int main() {// 创建共享内存int shmid = shmget(SHM_KEY, sizeof(temp_data), IPC_CREAT | 0666);// 创建显示进程if(fork() == 0) {display_process();exit(0);}// 创建两个传感器进程if(fork() == 0) {sensor_process("living_room");exit(0);}if(fork() == 0) {sensor_process("bedroom");exit(0);}// 等待子进程(实际应用中应有更完善的等待逻辑)wait(NULL);// 清理资源(此处简化处理)shmctl(shmid, IPC_RMID, NULL);return 0;
}
实现效果:
=== 家庭温度监控 ===
客厅: 23.5°C
卧室: 25.8°C=== 家庭温度监控 ===
客厅: 26.1°C
卧室: 24.3°C=== 家庭温度监控 ===
客厅: 22.9°C
卧室: 27.4°C
(每2秒更新一次温度数据)
 
代码说明:
  1. 数据结构设计

    • living_room_temp:存储客厅温度值

    • bedroom_temp:存储卧室温度值

    • update_flag:简单的数据更新标志

  2. 进程分工

    • 传感器进程:模拟温度传感器(每个房间一个进程)

      • 生成随机温度数据(20.0~30.0)

      • 更新对应房间的温度值

      • 设置更新标志位

    • 显示进程:统一显示数据

      • 监控更新标志位

      • 显示最新温度后重置标志位

  3. 关键技术点

    • shmget:创建/获取共享内存

    • shmat:将共享内存映射到进程地址空间

    • 简单标志位实现数据更新通知(实际生产环境建议使用信号量)

编译运行:
gcc -o smart_home smart_home.c
./smart_home
应用场景扩展:
  1. 智能家居系统

    • 集成更多传感器(湿度、光照)

    • 添加自动控制逻辑(温度超过阈值启动空调)

  2. 工业监控系统

    • 监控多台设备状态

    • 异常数据报警功能

  3. 车联网系统

    • 收集多个车载传感器数据

    • 实时显示车辆状态

http://www.dtcms.com/a/576926.html

相关文章:

  • wordpress+企业站模版做论坛app网站
  • 社群时代下的商业变革:“开源AI智能名片链动2+1模式S2B2C商城小程序”的应用与影响
  • 深入理解浏览器渲染流程:从HTML/CSS到像素的奇妙旅程
  • Photoshop - Photoshop 工具栏(24)磁性套索工具
  • 抓取QNX的RAMdump数据如何操作
  • RabbitMQ Quorum 队列与classic队列关系
  • ubuntu摄像头型号匹配不上_11-6
  • Design Compiler:时钟树在综合时的特性
  • 阿里云 icp app备案
  • 算法基础篇:(二)基础算法之高精度:突破数据极限
  • 香港100G高防服务器的防御力如何?
  • 网站文章怎么做分享qq网站建设步骤详解视频教程
  • 开发者实践:机器人集群的 API 对接与 MQTT 边缘调度解耦
  • 百日挑战——单词篇(第十五天)
  • 中国SIP中继类型
  • Kubernetes 原生滚动更新(Rolling Update)完整实践指南
  • 沈阳做企业网站哪家好网架提升公司
  • [N_151]基于微信小程序校园学生活动管理平台
  • Stager贴花工作流:告别Painter的“烘焙式”贴图
  • Linux 开发语言选择指南:不同场景该用哪种?
  • h5网站动画怎么做的重庆企业网络推广价格
  • 免费创建网站带咨询的免费企业网站程序asp
  • css 宽度屏幕50%,高度等于宽度的50%,窗口变化,比例不变(宽度百分比,高度等比例自适应)
  • Photoshop通道的应用
  • VUE3+element-plus 循环列表中图标由后台动态添加
  • LangFlow前端源码深度解析:核心模块与关键实现
  • 从 Rust 到 Flutter:嵌入式图形与构建工具全景指南
  • 转折·融合·重构——2025十大新兴技术驱动系统变革与全球挑战应对
  • IP地址、子网掩码与网段:网络划分的核心概念
  • 怎样才能在百度搜索到自己的网站wordpress去掉分类栏目前缀