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

伊犁建设网站公司做设计什么网站平台好点做私活

伊犁建设网站公司,做设计什么网站平台好点做私活,ui设计加班很严重,网页设计公司logo放哪个位置共享内存 一.原理二.创建共享内存1.shmget2.写一个共享内存代码 三.进行通信1.各种接口2.各接口使用代码3.一次简单的通信四.共享内存的特点 一.原理 直接原理 共享内存顾名思义就是共同使用的一块空间。 很明显操作系统需要对这块内存进行管理#xff0c;那么就避免不了先描… 共享内存 一.原理二.创建共享内存1.shmget2.写一个共享内存代码 三.进行通信1.各种接口2.各接口使用代码3.一次简单的通信四.共享内存的特点 一.原理 直接原理 共享内存顾名思义就是共同使用的一块空间。 很明显操作系统需要对这块内存进行管理那么就避免不了先描述后组织的策略。 二.创建共享内存 1.shmget 申请一块共享内存-shmget 第二个参数创建共享内存的大小单位字节。 第三个参数多个选项 返回值如果成功返回共享内存标识符如果失败返回-1。 操作系统怎么保证不同进程看到同一个共享内存呢怎么知道这块内存是否存在呢 这就需要对第一个参数进行讨论了。 2.写一个共享内存代码 comm.hpp #ifndef __COMM_HPP__ #define __COMM_HPP__ #include iostream #include sys/types.h #include sys/ipc.h #include sys/shm.husing namespace std;const int size4096; const string path/home/chz;//任意写 const int proj_id0x6666;//任意写key_t Getkey()//获取一个key {key_t kftok(path.c_str(),proj_id);if(k0){perror(Create key wrong\n);exit(1);}coutCreate key sucess,key:kendl;return k; }int GetshareMem()//获取一个chmid {key_t kGetkey();int shmidshmget(k,size,IPC_CREAT|IPC_EXCL|0666);//创建方式和权限if(shmid0){perror(Create shmget wrong\n);exit(2);}coutCreate shmget sucess,shmid;shmidendl;return shmid; }#endif前面说过共享内存如果不主动释放会一直存在所以在调用该函数后我们可以使用ipcs -m查看内核的进程资源。 perms是权限nattch是与之相连的文件byte是共享内存大小建议一般按4096的整数倍创建因为系统一次分配的最小内存是4KB。 使用ipcrm -mshmid可以手动删除。 三.进行通信 1.各种接口 将共享内存挂入 第一个参数毫无疑问是共享内存标识符。 第二个参数一般设置为NULL。因为共享内存是在物理内存上要将其挂到虚拟内存的共享区但具体挂到共享区哪个位置一般由操作系统决定。该函数的返回值就是具体的起始地址。 第三个参数一般设为0。它是改变挂接时的权限虽然我们设置的共享内存权限是666但可以通过这个参数让它只读。 取消挂入 控制共享内存 第二个参数要进行什么操作。有许多参数可以自行查看这里使用 IPC_RMID删除该共享内存 第三个参数共享内存的属性。 2.各接口使用代码 processa.cc #includecomm.hpp #include unistd.hint main() {int shmidGetshareMem();sleep(3);char*shmaddr(char*)shmat(shmid,NULL,0);//将共享内存挂入cout挂入内存endl;sleep(3);shdit(shmaddr);//取消挂入cout取消挂入endl;sleep(3);shmctl(shmid,IPC_RMID,nullptr);//销毁共享内存cout销毁共享内存endl;return 0; }3.一次简单的通信 稍微修改一下comm.hpp,主要在shmget当一个进程创建时让另一个进程能获取 #ifndef __COMM_HPP__ #define __COMM_HPP__ #include iostream #include sys/types.h #include sys/ipc.h #include sys/shm.husing namespace std;const int size4096; const string path/home/chz;//任意写 const int proj_id0x6666;//任意写key_t Getkey()//获取一个key {key_t kftok(path.c_str(),proj_id);if(k0){perror(Create key wrong\n);exit(1);}coutCreate key sucess,key:kendl;return k; }int GetShareMemHelper(int flag)//获取一个chmid {key_t kGetkey();int shmidshmget(k,size,flag);//创建方式和权限if(shmid0){perror(Create shmget wrong\n);exit(2);}coutCreate shmget sucess,shmid;shmidendl;return shmid; }int CreateShm() {return GetShareMemHelper(IPC_CREAT|IPC_EXCL|0666); }int GetShm() {return GetShareMemHelper(IPC_CREAT); }#endifprocessa.cc #includecomm.hpp #include unistd.hint main() {int shmidCreateShm();//创建共享内存//挂入内存//获取起始地址并把它当作字符串使用char*shmaddr(char*)shmat(shmid,nullptr,0);while(true){//直接读取coutI am read:;coutshmaddrendl;sleep(1);}shmdt(shmaddr);//取消挂起shmctl(shmid,IPC_RMID,nullptr);return 0; }processb.cc #includecomm.hppint main() {int shmidGetShm();//获取共享内存//挂入内存//获取起始地址并把它当作字符串使用char*shmaddr(char*)shmat(shmid,nullptr,0);while(true){coutplease Enter:;fgets(shmaddr,4096,stdin);//直接从键盘读入}return 0; }makefile .PHONY:all all:processa processbprocessa:processa.ccg -o $ $^ -stdc11 processb:processb.ccg -o $ $^ -stdc11.PHONY:clean clean:rm -f processa processb四.共享内存的特点 1.共享内存没有同步互斥之类的保护机制。即使没有写入也依然会读 2.共享内存是所有的进程通信中最快的。拷贝少 3.共享内存里的所有数据由用户自己维护。操作系统不会自动将数据清零
http://www.pierceye.com/news/66578/

相关文章:

  • 搭建网站的网站网站界面设计的主要内容
  • 建设网站策划案怎么做类似淘宝网站吗
  • 网站建设基本话术文化建设成就
  • 贵阳建设公司网站阿里云主机wordpress
  • 网站建设方案书例子南京网站seo
  • 电商网站建设收费小程序商城货源怎么找
  • 上传自己做的网站吗公众号如何推广运营
  • cn域名做犯法网站如何制作统计小程序
  • 手机做照片下载网站网上申报系统入口
  • DS716 II 做网站3d效果图怎么制作
  • 网站后台做链接网络工程师是干什么的
  • wordpress 社交网站网站分析怎么写
  • 网站防注入怎么办wordpress连接数据库出错
  • 怎样找到正规代加工网站网站建设方案服务器
  • 综治暨平安建设网站秦皇岛网站建设哪家好
  • 长沙长沙建设网站毕业设计模板网站
  • 个人网站推广怎么做湖州做网站建设的公司哪家好
  • 潍坊网站建设哪里好浙江省城乡住房建设网站
  • 自学做网站的书化工企业商城网站建设公司
  • 海阳建设局网站一单一结手机兼职
  • 关于建设工程招标类的公共网站董事长办公室装修设计效果图
  • 宁波做网站排名的公司有哪些济南建站都选企汇优先做后付
  • 做网站犯法吗wordpress 网页 登录界面
  • 珠海网站建设的公司ie禁止访问网站
  • 濮阳网站建设 公司名字长沙有哪些推广平台
  • 高端医疗网站开发wordpress 新闻主题
  • 诸暨网站制作公司 网页南宁网络推广方案
  • 家具展示型网站想开个网站不知怎样做
  • 游戏网站建设视频教程福建省网站建设绩效排名
  • 拿别的公司名字做网站幼教网站建设分析