大数据进程间通信的共享内存是怎样的
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇文章给大家分享的是有关大数据进程间通信的共享内存是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。共享内存:用于进程之间的数据传
千家信息网最后更新 2026年10月31日大数据进程间通信的共享内存是怎样的
本篇文章给大家分享的是有关大数据进程间通信的共享内存是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
共享内存:
用于进程之间的数据传递,是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安全错误
数据库的锁怎样保障安全
互联网科技行业发展
互联网科技有限公司图片
平安科技 互联网
奇酷互联网络科技
碳银互联网科技
互联网金融科技创新
上游互联网科技
成都狮子座互联网科技
互联网金融监管科技
镁科技互联网资讯平台
蓝色互联网科技
新华互联网科技2019
欧洲十大科技互联网公司
互联网软件和科技
中国航天科技大学国际工业互联网
哈尔滨屹滨互联网科技有限公司
燊美集互联网科技有限公司
允成互联网科技有限公司融资
深圳互联网科技的发展
小牛互联网科技有限公司地址
伟宏互联网科技
互联网科技的英文
融势互联网科技
深圳天众互联网科技公司
互联网金融 科技创新
互联网媒体平台算高科技产业
阿里互联网科技企业
中国互联网有什么科技
互联网领先科技活动
青岛互联网科技园