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

四平网站制作北京百度seo关键词优化

四平网站制作,北京百度seo关键词优化,福州免费做网站,伍佰亿网站推广父子共享的信息:文件描述符,mmap建立的共享映射区(MAP_SHARED) mmap父子间进程通信 var的时候 :读时共享,写时复制 父进程先创建映射区,指定共享MAP_SHARED权限 , fork创建子进程…

父子共享的信息:文件描述符,mmap建立的共享映射区(MAP_SHARED)

mmap父子间进程通信

var的时候 :读时共享,写时复制

父进程先创建映射区,指定共享MAP_SHARED权限 , fork创建子进程。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<sys/mman.h>
#include<fcntl.h>
#include<sys/wait.h>
int var = 100;
int main(int argc , char *argv[])
{int fd;pid_t pid;int *p;fd = open("text" , O_RDWR|O_CREAT|O_TRUNC , 0644);if(fd == -1){perror("open error");exit(1);}ftruncate(fd , 4);p = (int*)mmap(NULL, 4 , PROT_READ|PROT_WRITE , MAP_SHARED , fd , 0);if(p == MAP_FAILED){perror("mmap error");exit(1);}pid = fork();if(pid == 0){*p = 2000;   //写共享内存var = 1000;  printf("I am child,mypid:%d , *p = %d , var = %d\n" , getpid() , *p ,var);}else{sleep(1);printf("I am parent , *p = %d , var = %d\n" , *p , var);wait(NULL);int ret = munmap(p , 4);if(ret == -1){perror("munmap error");exit(1);}}return 0 ;
}

mmap无血缘关系进程间通信(重点)

两个进程打开同一个文件,创建映射区,指定flags为MAP_SHARED,一个进程写入一个进程读出。效率应该是最高的。 

为什么会映射到同一块内存上,借用GPT:即使两个没有血缘关系(即非父子关系)的进程,分别 open() 同一个文件,然后使用 mmap() 映射这同一个文件,得到的指针 p(虚拟地址)**可能不同,但它们最终指向的是同一块 物理内存页,因为 mmap 的核心是文件映射到物理页帧,多个进程映射相同文件内容,就映射到了同一块物理内存。

写端:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<sys/mman.h>
#include<fcntl.h>
#include<sys/wait.h>struct student{int id ;char name[256];int age;
};int main(int argc , char *argv[])
{struct student stu = {1 , "xiaoming" , 19};int fd;int *p;fd = open("textw" , O_RDWR|O_CREAT|O_TRUNC , 0644);ftruncate(fd , sizeof(stu));printf("fdwrite:%d\n",fd);p = mmap(NULL, sizeof(stu) , PROT_READ|PROT_WRITE , MAP_SHARED , fd , 0);if(p == MAP_FAILED){perror("mmap error");exit(1);}close(fd);while(1){sleep(1);memcpy(p ,&stu ,sizeof(stu));stu.id++;}munmap(p , sizeof(stu));return 0;
}

读端:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<sys/mman.h>
#include<fcntl.h>
#include<sys/wait.h>struct student{int id ;char name[256];int age;
};int main(int argc , char *argv[])
{struct student stu;int fd;struct student *p;fd = open("textw" , O_RDWR);printf("fd read: %d\n" , fd);p = mmap(NULL, sizeof(stu) , PROT_READ|PROT_WRITE , MAP_SHARED , fd , 0);if(p == MAP_FAILED){perror("mmap error");exit(1);}close(fd);while(1){printf("id:%d , name:%s , age:%d\n" , p->id , p->name , p->age);sleep(1);}munmap(p , sizeof(stu));return 0;
}

注意:无血缘关系进程间通信。FIFO:数据只能一次读取

mmap:数据可以重复读取。

匿名映射(了解)

void* mmap(NULL , size , PROT_READ|PROT_WRITE , MAP_SHARED|MAP_ANON , -1 ,0);size: 可以随便写
flags:需要写MAP_ANON
fd : -1

http://www.dtcms.com/wzjs/227587.html

相关文章:

  • 做网站和自媒体哪个好关键词在线播放免费
  • 汕头吧百度贴吧游戏优化是什么意思
  • 自己的网站怎么做进销存游戏推广对接平台
  • 深圳做网站广告联盟官网入口
  • 长沙房地产信息网官网旅游企业seo官网分析报告
  • 宝鸡做网站哪家公司好沧州百度推广公司
  • 深圳网站建设开发哪家好免费关键词挖掘工具
  • 微信登录建设银行网站网络营销公司
  • 基于网站优化的搜索引擎推广方法大型的营销型网站
  • 长沙网站搭建首选智投未来网络营销公司注册找哪家
  • 柳州网站制作公司百度搜索引擎的原理
  • 韶关网站建设价格搜索引擎优化的英语简称
  • 做黄图网站接广告好赚吗搜索引擎网站优化推广
  • 做网站网络电商平台推广公司
  • 网站不备案可以用吗山东济南最新事件
  • 怎么做干果网站廊坊关键词排名首页
  • 面包屑网站导航怎么做鸿科经纬教网店运营推广
  • 怎样做网站排名手机搭建网站
  • 怎么给网站做防护佛山网站快速排名提升
  • 政府门户html网站模板网站免费软件
  • 查询公司郑州seo顾问外包公司
  • yii2框架做的网站有哪些站长之家下载
  • 2017自己做网站的趋势信阳网络推广公司
  • 网盘搜索网站怎么做条友网
  • wordpress textarea福州百度seo排名
  • 程序开发的基本步骤是什么关键词优化排名工具
  • 集团制度建设网站网页设计与制作期末作品
  • Java建设的网站有哪些脱发严重是什么原因引起的
  • java营销网站建设admin5站长网
  • 网站建设宣传图psseo自然排名关键词来源的优缺点