大数据进程间通信的共享内存是怎样的
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇文章给大家分享的是有关大数据进程间通信的共享内存是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。共享内存:用于进程之间的数据传
千家信息网最后更新 2025年11月07日大数据进程间通信的共享内存是怎样的
本篇文章给大家分享的是有关大数据进程间通信的共享内存是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
共享内存:
用于进程之间的数据传递,是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安全错误
数据库的锁怎样保障安全
福山区直播软件开发哪家靠谱
ssl服务器可能需要更新
广西网络安全法第四十四条案例
表格如何去掉隐藏的数据库
如何建立sql服务器
氦氪云服务器
中国的互联网服务器受别国制约吗
网络安全攻防 pdf
dns服务器
数据库有主键怎么办
福山区游戏软件开发公司有哪些
网络安全简单的绕口令
比特币数据库
软件开发需要几个月
网络安全设施清单
谢娜 数据库
江宁区网络软件开发
教资网络安全
图书馆英语学习的数据库
专科计算机网络技术好不好
网络安全画报不要文字
贵州软件开发行业 单价
skt搜寻数据库
网络安全应急预案培训
imp到数据库排除某张表
数据库如何设置允许远程连接
美国全世界建立了多少数据库
超事通网络技术牌
桐梓县松坎镇网络安全
如何测试数据库安装完成