【求救】shmget的core 问题

文件名 testwrite.c


/***** 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;
int main(int argc, char** argv)
{
    int shm_id,i;
    key_t key;
    char temp;
    people *p_map;

    char* name = "/home/sy";  

    key = ftok(name,0);
    if(key==-1)
        perror("ftok error");

    shm_id=shmget(key,sizeof(people)*10,IPC_CREAT );
    if(shm_id==-1)
    {
        perror("shmget error");
        return -1;
    }
    p_map=(people*)shmat(shm_id,NULL,0);
    temp='a';
    for(i = 0;i<1;i++)
    {
        temp+=1;
        memcpy((*(p_map+i)).name,&temp,1);  //1)执行的时候coredump出现,
        (*(p_map+i)).age=20+i;  //1)执行的时候coredump出现,

    }
    if(shmdt(p_map)==-1)
      perror(" detach error ");

    return 0;
}

 

我的系统是HP-UX zx6000 B.11.23。

经过调查发现问题是ftok的时候指定的文件名的路径没有权限,如果指定为 char* name = "/tmp/sy"; 就执行OK。

(修正前: char* name = "/home/sy"; )

 

具体原因不明白。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值