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

有趣的网站之家莱芜百度贴吧

有趣的网站之家,莱芜百度贴吧,网络推广软件是否涉及犯罪,专业网站建设包括哪些docker与宿主机共享内存通信 docker中的进程要与宿主机使用共享内存通信#xff0c;需要在启动容器的时候指定“–ipchost”选项。然后再编写相应的共享内存的程序#xff0c;一个跑在宿主机上#xff0c;另一个跑在docker上面。 宿主机程序准备 shm_data.h #ifndef _SH…docker与宿主机共享内存通信 docker中的进程要与宿主机使用共享内存通信需要在启动容器的时候指定“–ipchost”选项。然后再编写相应的共享内存的程序一个跑在宿主机上另一个跑在docker上面。 宿主机程序准备 shm_data.h #ifndef _SHMDATA_H_HEADER #define _SHMDATA_H_HEADER#define TEXT_SZ 2048struct shared_use_st {int written; // 作为一个标志非0表示可读0表示可写char text[TEXT_SZ]; // 记录写入 和 读取 的文本 };#endifshm_slave.c #include unistd.h #include stdlib.h #include stdio.h #include string.h #include sys/shm.h #include shmdata.hint main(int argc, char **argv) {void *shm NULL;struct shared_use_st *shared NULL;char buffer[BUFSIZ 1]; // 用于保存输入的文本int shmid;// 创建共享内存shmid shmget((key_t)1234, sizeof(struct shared_use_st), 0666|IPC_CREAT);if (shmid -1){fprintf(stderr, shmget failed\n);exit(EXIT_FAILURE);}// 将共享内存连接到当前的进程地址空间shm shmat(shmid, (void *)0, 0);if (shm (void *)-1){fprintf(stderr, shmat failed\n);exit(EXIT_FAILURE);}printf(Memory attched at %X\n, (int)shm);// 设置共享内存shared (struct shared_use_st *)shm;while (1) // 向共享内存中写数据{// 数据还没有被读取则等待数据被读取不能向共享内存中写入文本while (shared-written 1){sleep(1);printf(Waiting...\n);}// 向共享内存中写入数据printf(Enter some text: );fgets(buffer, BUFSIZ, stdin);strncpy(shared-text, buffer, TEXT_SZ);// 写完数据设置written使共享内存段可读shared-written 1;// 输入了end退出循环程序if (strncmp(buffer, end, 3) 0){break;}}// 把共享内存从当前进程中分离if (shmdt(shm) -1){fprintf(stderr, shmdt failed\n);exit(EXIT_FAILURE);}sleep(2);exit(EXIT_SUCCESS); }makefile all:gcc -o shm_slave shm_slave.c clean:rm -rf shm_slavedocker镜像准备 shm_data.h #ifndef _SHMDATA_H_HEADER #define _SHMDATA_H_HEADER#define TEXT_SZ 2048struct shared_use_st {int written; // 作为一个标志非0表示可读0表示可写char text[TEXT_SZ]; // 记录写入 和 读取 的文本 };#endifshm_master.c #include stddef.h #include sys/shm.h #include stdio.h #include stdlib.h #include unistd.h #include string.h #include shmdata.hint main(int argc, char **argv) {void *shm NULL;struct shared_use_st *shared; // 指向shmint shmid; // 共享内存标识符// 将内容写入到文件可以通过查看文件确定共享内存是否成功FILE* file fopen(t.txt,w);// 创建共享内存shmid shmget((key_t)1234, sizeof(struct shared_use_st), 0666|IPC_CREAT);if (shmid -1){fprintf(stderr, shmat failed\n);exit(EXIT_FAILURE);}// 将共享内存连接到当前进程的地址空间shm shmat(shmid, 0, 0);if (shm (void *)-1){fprintf(stderr, shmat failed\n);exit(EXIT_FAILURE);}printf(\nMemory attached at %X\n, (int)shm);// 设置共享内存shared (struct shared_use_st*)shm; // 注意shm有点类似通过 malloc() 获取到的内存所以这里需要做个 类型强制转换shared-written 0;while (1) // 读取共享内存中的数据{// 没有进程向内存写数据有数据可读取if (shared-written 1){printf(You wrote: %s, shared-text);fputs(shared-text,file);fflush(file);sleep(1);// 读取完数据设置written使共享内存段可写shared-written 0;// 输入了 end退出循环程序if (strncmp(shared-text, end, 3) 0){break;}}else // 有其他进程在写数据不能读取数据{sleep(1);}}// 把共享内存从当前进程中分离if (shmdt(shm) -1){fprintf(stderr, shmdt failed\n);flcose(file);exit(EXIT_FAILURE);}// 删除共享内存if (shmctl(shmid, IPC_RMID, 0) -1){fprintf(stderr, shmctl(IPC_RMID) failed\n);fclose(file);exit(EXIT_FAILURE);}flcose(file);exit(EXIT_SUCCESS); }makefile all:gcc -o shm_master shm_master.c clean:rm -rf shm_masterDockerfile FROM gcc:latestRUN mkdir /usr/src/shm_testCOPY shm_master.c shm_data.h makefile /usr/src/shm_test/WORKDIR /usr/src/shm_testRUN makeCMD [./shm_master]运行 运行时需要先下载docker获取支持c语言编译运行的基础镜像比如ubuntu、gcc等。这里使用gcc作为基础镜像。 sudo apt install docker sudo docker pull gcc # 查看一下gcc的镜像是否拉取下来了 docker images基础镜像有了后就可以基于基础镜像构建docker容器基于上面所写的dockerfile构建镜像 sudo docker build -t shm_master:v1 . # 查看镜像是否创建成功 sudo docker images镜像创建成功后就可以启动容器启动时记得加上参数“–ipc”。 # fe9c3bd6d102是之前创建成功的镜像的id sudo docker run -d --ipchost --name master fe9c3bd6d102成功启动容器后可以进入到容器内部查看通信相关信息。 sudo docker exec -it master /bin/bashreference 需要特别说明的是:以下共享内存的代码均来自博客,在此表示感谢。docker镜像创建参考自北极之光的博客。 https://www.cnblogs.com/hailun1987/p/9697236.html https://www.jianshu.com/p/7eb7c7f62bf3 https://www.cnblogs.com/52php/p/5861372.html
http://www.dnsts.com.cn/news/78166.html

相关文章:

  • 免费注册一个网站网站能否做二维码
  • 有哪些做企业点评的网站优秀设计案例
  • 网站安全代维深圳做网站网络公司
  • 网站设计所需软件微商城网站建设报价
  • 优化seo网站西安杭州网站开发工程师
  • 扬州 网站 建设房屋装修设计培训学校
  • 公司网站域名到期正规网站建设推荐谁好呢
  • 免费商城版网站成都网站备案太慢
  • 网站建设创客站长工具推荐
  • 做网站烧钱南阳做网站公司哪家好
  • 内部购物券网站怎么做西宁服务
  • 夏天做那个网站能致富上海在建工程查询
  • 正能量软件网站免费入口页面设计属于什么知识产权
  • 网站建设网站什么叫利用网站做蜘蛛池
  • 网站信息内容建设责任制落实情况淄博微信网站建设
  • 信息产业部网站备案系统兰州网站建设设计
  • 网站设计对网站搜索引擎友好性的影响东莞废水处理 东莞网站建设
  • html怎么做音乐网站开发app定制
  • 陕西网站建设费用分类网站发布信息有生意做吗
  • 基于.NET的电子商务网站开发网站推广指标包括
  • 网站源码建设模板深圳高端营销网站
  • seo站长工具综合查询学网站开发月薪多少
  • 微网站建设收费网络营销推广三板斧
  • 商城网站设计策划一个公司网站开发多少钱
  • 网站图片移动怎么做的厦门关键词优化报价
  • 响应式网站外包网页端登录
  • 网站建设大概要多少钱做网站如何避免侵权
  • 用dw做的网站怎么上传wordpress 块
  • 网站模板视频教程tp5如何在自己网站后台做pv uv统计
  • 西乡做网站公司口碑营销的模式