大数据进程间通信的共享内存是怎样的
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇文章给大家分享的是有关大数据进程间通信的共享内存是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。共享内存:用于进程之间的数据传
千家信息网最后更新 2025年02月01日大数据进程间通信的共享内存是怎样的
本篇文章给大家分享的是有关大数据进程间通信的共享内存是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
共享内存:
用于进程之间的数据传递,是system v版本中最高效的,但是它不会同步与互斥,所以常与信号量搭配使用。
nattch:表示有多少个进程挂接在共享内存上。要查看其值用 ipcs -m 命令
删除key值用 ipcrm -m +key值;
图形理解共享内存:
#include
#include
1.创建共享内存函数:
int shget(key_t key,size_t size, int shmflg* buf);
第二个参数是其大小,一般为4k 即4096的整数倍;
第三个参数一般为:IPC_CREAT|IPC_EXCL;
2.销毁共享内存的函数:
int shmctl(int shm _id,int cmd,int shmflg* buf);
第二个参数一般为:IPC_RMID;
3.挂接在共享内存上:
void *shmat(int shmid, const void *shmaddr, int shmflg);
4.去关联共享内存
int shmdt(const void *shmaddr);
共享内存实现代码:
//comm.h 1 #include2 #include 3 #include 4 #include 5 #include 6 #define _PATH_ "." 7 #define _PROJ_ID_ 0X7777 8 #define _SIZE_ 4096 9 int shm_create() 10 { 11 key_t key=ftok(_PATH_, _PROJ_ID_); 12 if(key<0) 13 { 14 perror("ftok"); 15 return -1; 16 } 17 int shm_id=shmget(key,_SIZE_,IPC_CREAT|IPC_EXCL|0666); 18 if(shm_id<0) 19 { 20 perror("shmget"); 21 return -1; 22 } 23 return shm_id; 24 } 25 26 int shm_get() 27 { 28 29 30 key_t key=ftok(_PATH_, _PROJ_ID_); 31 if(key<0) 32 { 33 perror("ftok"); 34 return -1; 35 } 36 int shm_id=shmget(key,_SIZE_,IPC_CREAT);//得到的是已创建好的 37 if(shm_id<0) 38 { 39 perror("shmget"); 40 return -1; 41 } 42 return shm_id; 43 44 } //server.c 1 #include"comm.h" 2 3 int main() 4 { 5 int shm_id=shm_create(); 6 sleep(10); 7 char *start=at_shm(shm_id); 8 int i; 9 for(i=0;i<20;++i) 10 { 11 12 printf("%s\n",start); 13 sleep(1); 14 15 } 16 dt_shm(start); 17 shm_destroy(shm_id); 18 return 0; 19 }//client.c 1 #include"comm.h" 2 3 int main() 4 { 5 int shm_id=shm_get(); 6 sleep(5); 7 char *start=at_shm(shm_id); 8 int i; 9 for(i=0;i<20;++i) 10 { 11 start[i]='A'; 12 start[i+1]='\0'; 13 } 14 sleep(7); 15 dt_shm(start); 16 sleep(12); 17 return 0; 18 19 20 21 22 } //Makefile 1 .PHONY:all 2 all:server client 3 server:server.c 4 gcc -o $@ $^ 5 client:client.c 6 gcc -o $@ $^ 7 .PHONY:clean 8 clean: 9 rm -f server client
:
结果分析:
当server.c 运行起来时显示器上没有东西,当client.c运行起来打印东西时,这时的server也可以读到内容将其显示在显示器上。这样实现了不同进程之间的通信,通过共享内存。
以上就是大数据进程间通信的共享内存是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
内存
进程
数据
通信
参数
东西
之间
函数
显示器
更多
知识
篇文章
运行
不同
实用
三个
代码
信号
内容
命令
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
远程网络技术学校
材料类数据库网站
创始人 清华 网络安全
关于网络安全的新闻100字
福建服务器机房价格
网络安全小故事学生征文案例
无锡市龙骨设备生产系统软件开发
南阳直播软件开发公司
云脉科技福建互联网20强
汇编的http服务器
戴尔r730xd服务器闪黄灯
应用服务器和数据库服务器
一键管理服务器
服务器延迟的原因有哪些
网络安全教育准备
曙光英雄使用的什么服务器
武汉软件开发网慧
oracle数据库优点
cn服务器
网络安全和信息技术哪个有前途
杭州软件开发app公司哪家强
高职软件开发专业好
深圳市智投未来网络技术
想自己做软件开发
连接电脑的服务器的名称
网络安全保护平台是什么意思
微信小程序数组传入数据库
服务器延迟的原因有哪些
银行软件开发方面的书
德迅服务器