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

如何查找同行网站做的外链网站优化及推广方案

如何查找同行网站做的外链,网站优化及推广方案,wordpress 上传 pdf,模板 网站 缺点共享内存概述#xff1a; 共享内存是进程间通信的一种方式#xff0c;它允许两个或多个进程共享一个给定的存储区。共享内存是最快的一种IPC形式#xff0c;因为它允许进程直接对内存进行读写操作#xff0c;而不需要数据在进程之间复制。 共享内存是进程间通信#xff…共享内存概述 共享内存是进程间通信的一种方式它允许两个或多个进程共享一个给定的存储区。共享内存是最快的一种IPC形式因为它允许进程直接对内存进行读写操作而不需要数据在进程之间复制。 共享内存是进程间通信IPC中效率非常高的一种方式因为它允许多个进程直接访问同一块内存区域从而避免了数据在进程间复制的开销。这种直接访问内存的方式减少了数据传输的时间提高了通信效率。 在 Linux 系统中通过 ipcs -m 查看所有的共享内存 1.创建共享内存 shmget() 是一个在 Linux 系统上用于创建或获取共享内存段的系统调用 shmget()函数描述 函数头文件 #include sys/ipc.h #include sys/shm.h函数原型 int shmget(key_t key, size_t size, int shmflg);函数参数 key_t key: 这是一个键值用于标识共享内存段。如果key是IPC_PRIVATE则创建一个新的共享内存段并且不与其他任何共享内存段关联。 size_t size: 这是共享内存段的大小以字节为单位。这个大小必须是一个系统页的整数倍。 int shmflg: 这是一组标志位用于控制共享内存段的权限和控制选项。 常见的标志位包括 IPC_CREAT: 如果指定了这个标志并且key指定的共享内存段不存在则创建一个新的共享内存段。 IPC_EXCL: 与IPC_CREAT一起使用如果共享内存段已经存在则shmget()调用失败。 0666 (八进制): 这是权限掩码用于设置共享内存段的权限。默认情况下所有用户都可以读写共享内存段。函数返回值 成功返回一个有效的共享内存标识符 失败返回-1并设置errno来指示错误 错误原因: EACCES: 没有权限访问共享内存段。 EEXIST: IPC_CREAT | IPC_EXCL 被设置但共享内存段已经存在。 EINVAL: size不是系统页大小的整数倍或者key是无效的。 ENOMEM: 系统内存不足无法创建新的共享内存段 扩充知识--系统页大小 在Linux系统中系统页面大小也称为页大小或分页大小是指操作系统用于管理内存的分配单元的大小。这个大小是虚拟内存系统中页表条目的大小也是内存管理单元MMU分页机制的基础。 系统页面大小通常是4KB即4096字节但这个值可能会根据不同的体系结构和操作系统的实现而有所不同。例如在某些64位体系结构上页面大小可能是8KB或更大。这个大小对于性能优化很重要因为它决定了内存映射和页表条目的效率。 示例代码 #include stdio.h #include sys/ipc.h #include sys/shm.h #include errno.h #include string.hint main() {size_t size 1024; // 分配1024字节int shmflg 0666 | IPC_CREAT; // 设置权限并创建共享内存int shmid shmget(IPC_PRIVATE, size, shmflg);if (shmid -1) {fprintf(stderr, shmget failed: %s\n, strerror(errno));return 1;}printf(Shared memory ID: %d\n, shmid);return 0; } 2.附加共享内存 shmat() 是一个在 Linux 系统中用于将共享内存段附加到调用进程的地址空间的系统调用。这个函数是共享内存 IPC 机制的一部分它允许进程访问由 shmget() 创建的共享内存段 shmat()函数描述 函数头文件 #include sys/types.h #include sys/shm.h函数原型 void *shmat(int shmid, const void *shmaddr, int shmflg);函数参数 int shmid: 这是由shmget()函数返回的共享内存段的标识符。 const void *shmaddr: 这是一个可选的指针指定共享内存段应该被附加到进程地址空间的哪个位置。 如果设置为NULL系统会自动选择一个合适的地址。int shmflg: 这是一个标志位用于控制共享内存的附加行为。 可能的标志包括 SHM_RDONLY: 将共享内存附加为只读。 SHM_RND: 将共享内存附加到一个页面边界地址这可以提高内存访问的效率。函数返回值 成功返回附加的共享内存段的地址 失败返回(void *) -1并设置errno以指示错误的原因。 错误原因 EACCES 调用进程没有请求的附加类型所需的权限 并且在管理IPC命名空间的用户命名空间中没有CAP_IPC_OWNER功能。EIDRM shmid指向一个已删除的标识符。EINVAL 无效的shmid值未对齐(即未对齐页面且未指定SHM_RND)或无效的shmaddr值 或者不能在shmaddr上附加段或者指定了SHM_REMAP而shmaddr被指定NULL。ENOMEM 无法为描述符或页表分配内存。 示例代码 #include stdio.h #include stdlib.h #include sys/ipc.h #include sys/shm.h #include unistd.h #include string.hint main() {int shmid; // 共享内存标识符char *shared_memory; // 共享内存的指针// 创建一个共享内存段shmid shmget(IPC_PRIVATE, 1024, 0666 | IPC_CREAT);if (shmid -1) {perror(shmget);exit(1);}将共享内存附加到其地址空间shared_memory (char *)shmat(shmid, NULL, 0);if (shared_memory (char *)(-1)) {perror(shmat);exit(1);}// 写入一些数据到共享内存strcpy(shared_memory, Hello, World!);return 0 } 3.分离共享内存 当进程不再需要访问共享内存时可以使用 shmdt 系统调用将其从进程的地址空间中分离。 shmdt()函数描述:  函数头文件 #include sys/types.h #include sys/shm.h函数原型 int shmdt(const void *shmaddr);函数参数 shmaddr: 这是之前通过shmat()函数附加的共享内存段的地址。函数返回值 成功返回0。 失败返回-1并设置errno以指示错误。 错误原因 EINVAL: 在shmaddr上没有附加共享内存段;或者shmaddr没有在页边界上对齐 4.读写共享内存 一旦共享内存段被附加到进程的地址空间进程就可以通过指针直接访问和操作共享内存中的数据。这使得共享内存成为进程间通信IPC中非常快速和高效的一种方式。 一旦共享内存段被附加进程就可以通过指针 shmaddr 读写共享内存。这部分内存就像普通的内存一样使用 示例代码 void* addr shmat(shmid,NULL,0); if(addr (void*)-1) {perror(shmat);exit(EXIT_FAILURE); } char buf[1024]{0}; memcpy(buf,addr,10); printf(share memory content:%s\n,buf); shmdt(addr); //分离共享内存 5.控制共享内存 在Linux中共享内存的控制通常通过 shmctl 系统调用来实现。shmctl 函数可以对共享内存段进行多种操作包括获取共享内存的状态、设置共享内存的状态以及删除共享内存段。 shmctl()函数描述 函数头文件 #include sys/ipc.h #include sys/shm.h函数原型 int shmctl(int shmid, int cmd, struct shmid_ds *buf);函数参数 shmid共享内存段的标识符这个标识符是通过shmget()函数创建共享内存段时返回的。 cmd指定要执行的控制操作。 它可以是以下命令之一 IPC_STAT获取共享内存段的状态信息buf指向的结构会被填充。 IPC_SET设置共享内存段的属性buf指向的结构包含了要设置的值。 IPC_RMID删除共享内存段只有拥有适当权限的用户通常是创建者或超级用户可以执行此操作。 SHM_LOCK锁定共享内存段防止其被交换出物理内存。 SHM_UNLOCK解锁共享内存段允许其被交换。 IPC_INFO获取系统范围内共享内存的信息Linux 特定。 SHM_INFO获取系统范围内共享内存的详细信息Linux 特定。 SHM_STAT_ANY获取任何用户的共享内存段的状态信息Linux 特定自 Linux 4.17 起支持。buf指向shmid_ds结构的指针该结构用于存储共享内存段的信息或新属性 函数返回值 成功0 失败-1并设置errno以指示错误原因 shmid_ds结构体 示例代码 #include stdio.h #include sys/ipc.h #include sys/shm.hint main() {int shmid;struct shmid_ds shminfo;shmid shmget(IPC_PRIVATE, 1024, IPC_CREAT | 0666);// 获取共享内存段的信息if (shmctl(shmid, IPC_STAT, shminfo) -1) {perror(shmctl IPC_STAT);return 1;}printf(Size: %ld\n, (long)shminfo.shm_segsz);printf(Last attached: %ld\n, (long)shminfo.shm_nattch);// 删除共享内存段if (shmctl(shmid, IPC_RMID, shminfo) -1) {perror(shmctl IPC_RMID);exit(EXIT_FAILURE);}return 0; } 结语 无论你是初学者还是有经验的开发者我希望我的博客能对你的学习之路有所帮助。如果你觉得这篇文章有用不妨点击收藏或者留下你的评论分享你的见解和经验也欢迎你对我博客的内容提出建议和问题。每一次的点赞、评论、分享和关注都是对我的最大支持也是对我持续分享和创作的动力
http://www.tj-hxxt.cn/news/143203.html

相关文章:

  • 做影视网站有什么风险网站建设合同任
  • 模板网站配置文件闵行网站建设
  • 青岛学网站建设的学校国内最炫酷的网站
  • 帮别人设计网站北京公司注册核名详细流程
  • 旅游网站开发的意义相关资料做公司企业网站标准尺寸
  • 网站推广软件排名17岁在线观看免费高清完整版
  • 做纸巾定制的网站wordpress模板带后台
  • 重庆企业网站推广方法福州最新通告今天
  • 能进外国网站看视频的浏览器合肥高端网站建设费用
  • 在什么网站做调查问卷肇庆网页制作公司
  • 柠檬网络科技网站建设做网站设计需要什么技术
  • 广州专业的网站建设公司排名申请免费个人网站和域名
  • 网站二级域名怎么弄天津哪家网站做的好
  • 721网站建设案例学——网页设计与网站建设
  • 响应式 网站 设计软件网站建设哪家好 北京
  • 什么是电子商务网站的建设如何建设免费网站
  • 广州市天河区建设局网站建设企业网站e路护航官网企业端
  • 普通网站建设wordpress中文博客主题
  • 提供常州网站优化php内容管理系统cms
  • 建站 备案开发网页需要多少钱
  • 网站虚拟空间过期色弱做网站
  • 网站开发技能有哪些建设网站需要钱吗
  • 安康市建设规划局网站企业邮箱注册需要什么
  • 台州路桥做网站的公司wordpress降级
  • 建设社团网站的可行性分析wordpress theme o'connor
  • 国外对于网站开发安装nginx wordpress
  • 企业网站优化设计的含义网站开发的目的 实习报告
  • 网站建设需要上税吗海淀网站建设电话
  • 深圳手机商城网站设计多少钱泉州企业网站建设公司
  • 谷歌优化教程外贸seo网站搭建