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

WordPress仿站助手宝塔面板建wordpress

WordPress仿站助手,宝塔面板建wordpress,做调查问卷能赚钱的网站,有趣的网站有哪些【版权声明#xff1a;尊重原创。转载请保留源#xff1a;blog.csdn.net/shallnet 要么 .../gentleliu#xff0c;文章学习交流#xff0c;不用于商业用途】system V共享内存和posix共享内存类似#xff0c;system V共享内存是调用shmget函数和shamat函数。 shmget函数创…【版权声明尊重原创。转载请保留源blog.csdn.net/shallnet 要么 .../gentleliu文章学习交流不用于商业用途】         system V共享内存和posix共享内存类似system V共享内存是调用shmget函数和shamat函数。            shmget函数创建共享内存区或者訪问一个存在的内存区类似系统调用共享内存的open和posix共享内存shm_open函数。shmget函数原型为 #include sys/ipc.h#include sys/shm.hint shmget(key_t key, size_t size, int shmflg);        key: 函数ftok返回值。或者IPC_PRIVATE ,当使用IPC_PRIVATE时。最好两个进程空间是共享的比方父子进程否则当前进程产生的共享内存标识返回值。在还有一个进程里面不易得到。         ftok函数原型为key_t ftok(const char *pathname, int proj_id); 參数pathname为文件绝对路径名proj_id为一个整型标识符。该函数将一个已存在的的路径名和一个整型标识符转化成一个key_t值返回值称为IPC键。         size创建新的共享内存大小当创建一片新的共享内存时。该值为不为0的參数。假设是读取一片共享内存该值能够为0。         shmflg读写权限值组合。IPC_CREAT创建新的共享内存或IPC_CREAT|IPC_EXCL当将要创建的共享内存已经存在时再试图创建将返回EEXIST。事实上IPC_CREAT和IPC_EXCL的组合和open函数的O_CREAT和O_EXCL组合类似。         函数返回共享内存区的标识。shmxxx函数操作共享内存将使用该函数返回值。该函数类似posix共享内存shm_open函数功能。         当shmget创建或打开一个共享内存区后。须要使用函数shmat来将该片共享内存连接到当前进程空间中来当某一进程使用完共享内存后使用函数shmdt断开和共享内存的链接。 #include sys/types.h#include sys/shm.hvoid *shmat(int shmid, const void *shmaddr, int shmflg);int shmdt(const void *shmaddr);         shmid是函数shmget函数返回的共享内存标识符。         shmaddr 连接到调用进程地址空间的地址假设该參数为NULL系统选择一个合适地址。假设shmaddr非空而且shmflg指定了选项SHM_RND那么对应的共享内存链接到由shmaddr參数指定的地址向下舍入一个SHMLAB常值。假设shmaddr非空而且shmflg未指定SHM_RND共享内存地址链接到shmaddr參数指定的地址。         shmflg能够指定SHM_RND和SHM_RDONLY(仅仅读)假设指定SHM_RDONLY选项。那么调用进程对该片共享内存仅仅有读权限否则进程对该片内存将有读写权限。         函数shmdt不会删除指定的共享内存它仅仅是断开和该片共享内存的链接而已。当一个进程终止后。该进程链接的共享内存将自己主动断开。         shmat函数成功返回当前进程共享内存地址失败返回void *-1shmdt成功返回0。失败返回-1         删除共享内存须要函数shmctl调用IPC_RMID命令来完毕。 #include sys/ipc.h#include sys/shm.hint shmctl(int shmid, int cmd, struct shmid_ds *buf);         shmid共享内存区标识。         cmd对共享内存的操作命令命令IPC_RMID销毁destroy一片共享内存销毁之后全部shmat。shmdtshmctl对该片内存操作都将失效。销毁该共享内存要等到该共享内存引用计数变为0才进行。IPC_SET命令设置shmid_ds结构成员IPC_STAT返回当前共享内存结构。其余命令查看man手冊。         buf为指向shmid_ds数据结构 system V 共享内存演示样例 server processint sln_shm_get(char *shm_file, void **mem, int mem_len) {int shmid;key_t key;if (NULL fopen(shm_file, w)) {printf(fopen: %s\n, strerror(errno));return -1;}key ftok(shm_file, 0);if (key 0) {printf(ftok: %s\n, strerror(errno));return -1;}shmid shmget(key, mem_len, IPC_CREAT);if (shmid 0) {printf(shmget: %s\n, strerror(errno));return -1;}*mem (void *)shmat(shmid, NULL, 0);if ((void *)-1 *mem) {printf(shmat: %s\n, strerror(errno));return -1;}return shmid; }int main(int argc, const char *argv[]) {char *shm_file NULL;char *shm_buf NULL;int shmid;shmid sln_shm_get(SHM_IPC_FILENAME, (void **)shm_buf, SHM_IPC_MAX_LEN);if (shmid 0) {return -1;}snprintf(shm_buf, SHM_IPC_MAX_LEN, Hello system V shaare memory IPC! this is write by server.);sleep(15); printf(System V server delete share memory segment!\n);//shmdt(shm_buf);shmctl(shmid, IPC_RMID, NULL); //server在15秒之后destroy该片共享内存。此时客户进程将获取不到共享内存的内容return 0; }client process int sln_shm_get(char *shm_file, void **mem, int mem_len) {int shmid;key_t key;key ftok(shm_file, 0);if (key 0) {printf(ftok: %s\n, strerror(errno));return -1;}shmid shmget(key, mem_len, IPC_CREAT);if (shmid 0) {printf(shmget: %s\n, strerror(errno));return -1;}*mem (void *)shmat(shmid, NULL, 0);if ((void *)-1 *mem) {printf(shmat: %s\n, strerror(errno));return -1;}return shmid; }int main(int argc, const char *argv[]) {char *shm_buf NULL;int i;if (sln_shm_get(SHM_IPC_FILENAME, (void **)shm_buf, SHM_IPC_MAX_LEN) 0) {return -1;}printf(ipc client get: %s\n, shm_buf);return 0; }执行时首先执行server process使用命令ipcs能够查看当前系统共享内存# ipcs ------ Message Queues -------- key msqid owner perms used-bytes messages ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x0010a797 131072 root 0 4096 1 ------ Semaphore Arrays -------- key semid owner perms nsems 能够看到存在一个共享内存区当中key为0x0010a797 共享内存ID为131072 # ./client ipc client get: Hello system V shaare memory IPC! this is write by server. #当server进程destroy共享内存之后再反复上面步骤# ipcs ------ Message Queues -------- key msqid owner perms used-bytes messages ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status ------ Semaphore Arrays -------- key semid owner perms nsems 此时共享内存已经不在了但文件依旧存在。 # ./client ipc client get: # 此时client已经不能获取之前共享内存内容了。 另外ipcrm命令能够在命令行上删除指定共享内存区。 通过读取文件/proc/sys/kernel/shmmax能够获取系统所支持共享内存最大值# cat /proc/sys/kernel/shmmax 33554432 # 能够看到我眼下系统支持最大个共享内存值为32M。 通过上演示样例能够看到system V共享内存和posix共享内存类似只是posix共享内存的大小能够随时通过ftruncate改变而system V 的共享内存大小在shmget时就已经确定下来了。 相同的system V共享内存大多数时候也须要在多进程之间同步system V 能够使用自己的信号量来实现具体细节将在后面同步相关专栏具体解说。 本节源代码下载http://download.csdn.net/detail/gentleliu/8140887 版权声明本文博客原创文章博客未经同意不得转载。 转载于:https://www.cnblogs.com/mengfanrong/p/4712512.html
http://wiki.neutronadmin.com/news/233619/

相关文章:

  • 网站gzip压缩网站建设维护报价
  • 麻涌镇网站仿做logo设计大师
  • 西安高校网站建设长春火车站现在正常通车吗
  • 龙岩网站设计制作动易网站管理系统下载
  • 免费网络推广网站大全成都网站建设成都
  • 西安企业门户网站建设python php网站开发
  • 做简历的什么客网站wordpress阅读次数自动增长
  • 动漫网站建设毕业设计怎样做广告设计
  • 东阳网站推广小米3g 架设wordpress
  • 容桂顺德网站建设怎么封锁网站
  • 洛阳网站建设培训建设企业银行客户号在哪里看
  • 搭建一个影视网站做文学类网站后期花费
  • 全国二级建造师查询官网龙岩网站建设方案优化
  • php开源公司网站苏州市城乡和建设局网站首页
  • 网站热销榜怎么做郑州公司网站建设服务
  • 给别人做网站的话术网站被攻击打不开怎么办
  • 开平建设局网站动画专业大学
  • 无锡网站建设工作建站模板工程造价
  • 如何在电脑上建设网站青岛房地产团购网站建设
  • 潍坊市网站中装建设为什么不涨
  • 谷歌推广新手教程广东网络seo推广公司
  • 青岛上市公司网站建设wordpress形式
  • 网站建设企业服务襄樊最好网站建设价格
  • 微网站 地图网站线框图用什么做
  • iis7.0搭建网站安卓门户网站开发
  • 网站策划与建设阶段网站txt地图怎么做
  • 宁波海曙区建设局网站西安网站制作平台
  • 企业做网站公司有哪些垫江集团网站建设
  • 公司网站seo公司江苏商城网站制作公司
  • 网站设计报价单模板长沙好的做网站品牌