共享内存问题
时间:2010-08-25
来源:互联网
程序a
复制代码
程序b
复制代码
两个程序通过gcc编译后 启动程序a初始化共享内存
在启动程序b却读不到任何数据,说明两个程序的内存没被共享,要怎么解决这个问题呢?
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/ipc.h>
- #include <sys/shm.h>
- #include <memory.h>
- #include <unistd.h>
- #define SHM_MODE SHM_W|SHM_R
- struct ARG
- {
- int connfd[10000][50];
- char *connfds[10000][5];
- };
-
- int newshm(key_t key,int shmsiae)
- {
- int shmid;
- shmid = shmget(key,shmsiae, SHM_MODE|IPC_CREAT);
- if(shmid == -1)
- printf("newshm error%s\n",key);
- return shmid;
- }
-
- char * getshm(int shmid)
- {
- char *ptr;
- ptr =(char*)shmat(shmid,0,0);
- if(ptr == (char*)-1)
- printf("getshm error%s\n",shmid);
- return ptr;
- }
-
- int main(int argc,char *argv[])
- {
- int shmid,i;
- char *shmptr;
- shmid = newshm(89,52428800);
- shmptr = getshm(shmid);
- struct ARG *arg = (struct ARG *)shmptr;
- //初始化数据
- for(i=0;i<10000;i++)
- {
- arg->connfd[i][0]=1;
- arg->connfd[i][1]=1;
- arg->connfd[i][2]=1;
- }
- return 0;
- }
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/ipc.h>
- #include <sys/shm.h>
- #include <memory.h>
- #include <unistd.h>
- #define SHM_MODE SHM_W|SHM_R
- struct ARG
- {
- int connfd[10000][50];
- char *connfds[10000][5];
- };
-
- int newshm(key_t key,int shmsiae)
- {
- int shmid;
- shmid = shmget(key,shmsiae, SHM_MODE|IPC_CREAT);
- if(shmid == -1)
- printf("newshm error%s\n",key);
- return shmid;
- }
-
- char * getshm(int shmid)
- {
- char *ptr;
- ptr =(char*)shmat(shmid,0,0);
- if(ptr == (char*)-1)
- printf("getshm error%s\n",shmid);
- return ptr;
- }
-
- int main(int argc,char *argv[])
- {
- int shmid,i;
- char *shmptr;
- shmid = newshm(89,52428800);
- shmptr = getshm(shmid);
- struct ARG *arg = (struct ARG *)shmptr;
- while(1)
- {
- for(i=0;i<10000;i++)
- {
- if(arg->connfd[i][0])
- {
- printf("==%i==%i===",arg->connfd[i][0],arg->connfd[i][6]);
- }
- }
- usleep(3000000);
- }
- return 0;
- }
在启动程序b却读不到任何数据,说明两个程序的内存没被共享,要怎么解决这个问题呢?
作者: jd808 发布时间: 2010-08-25
怎么又两个shmget函数??b程序只要shmat就行了。。
作者: pengjianbokobe 发布时间: 2010-08-25
没shmid怎么shmat???
作者: jd808 发布时间: 2010-08-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28