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

哪家做网站的公司宁波建站模板源码

哪家做网站的公司,宁波建站模板源码,wordpress 搭建教程 pdf,企业销售型网站是什么Linux 共享内存 1. shmget函数2. shmat函数3. shmdt函数4. shmctl函数5. 注意#xff1a; 多线程共享进程的地址空间#xff0c;如果多个线程需要访问同一块内存#xff0c;用全局变量就可以了。 在多进程中#xff0c;每个进程的地址空间是独立的#xff0c;不共享的 多线程共享进程的地址空间如果多个线程需要访问同一块内存用全局变量就可以了。 在多进程中每个进程的地址空间是独立的不共享的如果多个进程需要访问同一块内存不能用全局变量只能用共享内存。 共享内存Shared Memory允许多个进程不要求进程之间有血缘关系访问同一块内存空间是多个进程之间共享和传递数据最高效的方式。进程可以将共享内存连接到它们自己的地址空间中如果某个进程修改了共享内存中的数据其它的进程读到的数据也会改变。 共享内存没有提供锁机制也就是说在某一个进程对共享内存进行读/写的时候不会阻止其它进程对它的读/写。如果要对共享内存的 读/写 加锁可以使用信号量。 Linux中提供了一组函数用于操作共享内存。 1. shmget函数 该函数用于创建/获取共享内存。 int shmget(key_t key, size_t size, int shmflg);1.key 共享内存的键值是一个整数typedef unsigned int key_t一般采用十六进制例如0x5005不同共享内存的key不能相同。 2.size 共享内存的大小以字节为单位。 3.shmflg 共享内存的访问权限与文件的权限一样例如 0666|IPC_CREAT0666表示全部用户对它可读写IPC_CREAT表示如果共享内存不存在就创建它。 4.返回值成功返回共享内存的id一个非负的整数失败返回-1系统内存不足、没有权限 用ipcs -m可以查看系统的共享内存包括键值key共享内存idshmid拥有者owner权限perms大小bytes。 以下例程来自b站公开课——c中高级工程师码农联盟 #include iostream #include cstdio #include cstdlib #include cstring #include unistd.h #include sys/ipc.h #include sys/shm.h using namespace std;struct stgirl // 超女结构体。 {int no; // 编号。char name[51]; // 姓名注意不能用string。 };int main(int argc,char *argv[]) {//if (argc!3) { cout Using:./demo no name\n; return -1; }// 第1步创建/获取共享内存键值key为0x5005也可以用其它的值。int shmidshmget(0x5005, sizeof(stgirl), 0640|IPC_CREAT);if ( shmid -1 ){cout shmget(0x5005) failed.\n; return -1;}cout shmid shmid endl;} 执行 demo 程序用 ipcs -m查看共享内存信息 用 ipcrm -m共享内存id可以手工删除共享内存如下 2. shmat函数 创建了共享内存后需要使用共享内存那就需要用到shmat函数了 该函数用于把共享内存连接到当前进程的地址空间。 void *shmat(int shmid, const void *shmaddr, int shmflg);1.shmid 由shmget()函数返回的共享内存标识。 2.shmaddr 指定共享内存连接到当前进程中的地址位置通常填0表示让系统来选择共享内存的地址。 3.shmflg 标志位通常填0。 调用成功时返回共享内存起始地址失败返回(void*)-1。 3. shmdt函数 如果不再使用共享内存使用shmdt函数将共享内存从当前进程中分离。 该函数用于将共享内存从当前进程中分离相当于shmat()函数的反操作 int shmdt(const void *shmaddr);shmaddr shmat()函数返回的地址。 调用成功时返回0失败时返回-1。 #include iostream #include cstdio #include cstdlib #include cstring #include unistd.h #include sys/ipc.h #include sys/shm.h using namespace std;struct stgirl // 超女结构体。 {int no; // 编号。char name[51]; // 姓名注意不能用string。 };int main(int argc,char *argv[]) {//if (argc!3) { cout Using:./demo no name\n; return -1; }// 第1步创建/获取共享内存键值key为0x5005也可以用其它的值。int shmidshmget(0x5005, sizeof(stgirl), 0640|IPC_CREAT);if ( shmid -1 ){cout shmget(0x5005) failed.\n; return -1;}cout shmid shmid endl;// 第2步把共享内存连接到当前进程的地址空间。stgirl *ptr(stgirl *)shmat(shmid,0,0); // 用stgirl结构体指针指向共享内存的起始地址if ( ptr(void *)-1 ){cout shmat() failed\n; return -1;}// 第3步使用共享内存对共享内存进行读/写。cout 原值no ptr-no ,name ptr-name endl; // 显示共享内存中的原值。ptr - noatoi(argv[1]); // 对超女结构体的no成员赋值。strcpy(ptr-name,argv[2]); // 对超女结构体的name成员赋值。//ptr - nameargv[2];cout 新值no ptr-no ,name ptr-name endl; // 显示共享内存中的当前值。// 第4步把共享内存从当前进程中分离。shmdt(ptr);} 刚开始共享内存中是空的调用的时候写入 12 小美 4. shmctl函数 该函数用于操作共享内存最常用的操作是删除共享内存。 int shmctl(int shmid, int command, struct shmid_ds *buf);1.shmid shmget()函数返回的共享内存id。 2.command 操作共享内存的指令如果要删除共享内存填IPC_RMID。 3.buf 操作共享内存的数据结构的地址如果要删除共享内存填0。 调用成功时返回0失败时返回-1。 注意用root创建的共享内存不管创建的权限是什么普通用户无法删除。 5. 注意 共享内存的数据结构可以用结构体或者数组但是只能用C内置的数据类型不能使用STL容器因为STL容器会动态的在堆区分配内存而在堆区分配的内存不属于共享内存
http://www.zqtcl.cn/news/646247/

相关文章:

  • 曹县汽车网站建设网站怎么做才 吸引人
  • 河南周口东宇网站建设wordpress怎么重新安装插件
  • wordpress无法上传主题南通做网站优化公司
  • 做彩票网站能挣到钱吗南充市房产信息网
  • 沧州北京网站建设金华网站建设哪个公司好点
  • 北京朝阳建站优化wordpress主题访问慢
  • wordpress最快仿站酷炫个人特别网站
  • 公司建站详细步骤如何注册一家公司要多少钱
  • 网站推广网络营销山西大学物理电子工程学院研招网
  • 亚马逊做国际外贸在哪个网站毕业设计网站开发选题依据
  • 镇江网站排名优化费用app软件开发平台游戏
  • 襄阳网站建设xytzg南通网站建设top
  • 有没有做产品团购的网站2d动画制作软件
  • 成都网站排名生客seo杭州专业网站制作设计
  • 阿里云 企业 网站四平市网站建设
  • 政务门户网站建设信息奇人网站
  • 打开网站弹出广告代码如何建设网站方便后期维护
  • 海淀网站建设龙岩做网站用什么cms 知乎
  • 网站托管费用多少免费一卡二卡三
  • 长沙做网站品牌中信建设官网站首页
  • 网站空白页黑链聊城网站建设代理商
  • 微信上打开连接的网站怎么做在网上可以做宣传的有那些网站
  • 公司在选择网站时应考虑什么问题溧阳 招网站开发
  • 兴宁电子商务网站建设农村电子商务网站建设方案
  • 张北县网站建设网站设计师加油站
  • 网站建设车成本网站开发网络结构图
  • 建设部职称网站宝山网站制作
  • 太仓网站建设哪家好58同城找工作
  • 一键网站制作机关网站建设建议
  • 快站公众号工具台州网站制作系统分析怎么写