免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2069 | 回复: 5
打印 上一主题 下一主题

共享内存不能创建,请问什么原因? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-10 22:39 |只看该作者 |倒序浏览
Informix安装完毕,初始化参数后,状态还是off-line,,不能创建共享内存,请问大侠们可能是什么原因?

论坛徽章:
0
2 [报告]
发表于 2004-10-12 11:54 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2004-10-12 12:27 |只看该作者

共享内存不能创建,请问什么原因?

[quote]原帖由 "tomorrowmine"]Informix安装完毕,初始化参数后,状态还是off-line,,不能创建共享内存,请问大侠们可能是什么原因?[/quote 发表:


informix版本?操作系统环境?

论坛徽章:
0
4 [报告]
发表于 2004-10-12 15:07 |只看该作者

共享内存不能创建,请问什么原因?

key=ftok(" /" , 0);  
shmid=shmget(key,SEGSIZE,IPC_CREAT|0604);  
if(shmid ==- 1){  
printf(" create shared momery error\n" );  
return- 1;  
}  
shm=(char* )shmat(shmid,0,0);

key=ftok(" /" , 0);  
shmid=shmget(key,SEGSIZE,0);  
if(shmid ==- 1){  
printf(" get shared momery error\n" );  
return- 1;  
}  
shm=(char* )shmat(shmid,0,0);

================================================
/***** testwrite.c *******/
#include <sys/ipc.h>;
#include <sys/shm.h>;
#include <sys/types.h>;
#include <unistd.h>;
typedef struct{
        char name[4];
        int age;
} people;
main(int argc, char** argv)
{
        int shm_id,i;
        key_t key;
        char temp;
        people *p_map;
        char* name = "/dev/shm/myshm2";
        key = ftok(name,0);
        if(key==-1)
                perror("ftok error";
        shm_id=shmget(key,4096,IPC_CREAT);       
        if(shm_id==-1)
        {
                perror("shmget error";
                return;
        }
        p_map=(people*)shmat(shm_id,NULL,0);
        temp='a';
        for(i = 0;i<10;i++)
        {
                temp+=1;
                memcpy((*(p_map+i)).name,&temp,1);
                (*(p_map+i)).age=20+i;
        }
        if(shmdt(p_map)==-1)
                perror(" detach error ";
}
/********** testread.c ************/
#include <sys/ipc.h>;
#include <sys/shm.h>;
#include <sys/types.h>;
#include <unistd.h>;
typedef struct{
        char name[4];
        int age;
} people;
main(int argc, char** argv)
{
        int shm_id,i;
        key_t key;
        people *p_map;
        char* name = "/dev/shm/myshm2";
        key = ftok(name,0);
        if(key == -1)
                perror("ftok error";
        shm_id = shmget(key,4096,IPC_CREAT);       
        if(shm_id == -1)
        {
                perror("shmget error";
                return;
        }
        p_map = (people*)shmat(shm_id,NULL,0);
        for(i = 0;i<10;i++)
        {
        printf( "name:%s\n",(*(p_map+i)).name );
        printf( "age %d\n",(*(p_map+i)).age );
        }
        if(shmdt(p_map) == -1)
                perror(" detach error ";
}

testwrite.c创建一个系统V共享内存区,并在其中写入格式化数据;testread.c访问同一个系统V共享内存区,读出其中的格式化数据。分别把两个程序编译为testwrite及testread,先后执行./testwrite及./testread 则./testread输出结果如下:

name: b        age 20;        name: c        age 21;        name: d        age 22;        name: e        age 23;        name: f        age 24;
name: g        age 25;        name: h        age 26;        name: I        age 27;        name: j        age 28;        name: k        age 29;

========================================================
        有一种方法就是采用SUN公司自带的光盘采取引导,建议采取这种方法:
         1. boot cdrom -s
         2. fsck /dev/dsk/c0t0d0s0 (取决于根分区的设备)
         3. mount -F ufs /dev/dsk/c0t0d0s0 /mnt
         4. TERM=ansi; export TERM
         5. 编辑/mnt/etc shadow文件,把root对应的口令去掉。
         6. 重启后的root的口令为空。

论坛徽章:
0
5 [报告]
发表于 2004-10-12 22:37 |只看该作者

共享内存不能创建,请问什么原因?

多谢大家,问题已经解决

犯的低级错误,SERVER的几个名字没设一致

论坛徽章:
0
6 [报告]
发表于 2004-10-13 15:29 |只看该作者

共享内存不能创建,请问什么原因?

haha...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP