linux java bus error,linux mmap简介及bus error的解决方案

// Arthur: zhangxiao

// Data: 2014/12/24

// Note: mmap write

/*******************/

#include

#include

#include

#include

#include

#include

#include

#include

//#define FILENAME "/home/zhangxiao/embededSystem/example/Mmap/test"

#define FILENAME "/tmp/test"

#define BUFLEN 128

typedef struct

{

char name[BUFLEN];

int id;

}people;

int main(int argc, char** argv)

{

int i;

unsigned int pmap=0;

int fd;

fd=open(FILENAME ,O_CREAT|O_RDWR|O_TRUNC,00777 );

assert(fd !=-1);

pmap = (unsigned int)mmap(0,sizeof(people),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);

assert(pmap!=-1);

write(fd," ",sizeof(people)); //write something

unsigned int addr;

addr=pmap;

char tempname[30]="helloworld";

int tempid=253;

addr = pmap + sizeof(char)*BUFLEN;

memcpy((void *)pmap,tempname,strlen(tempname)+1);

memcpy((void *)addr, &tempid,sizeof(int));

munmap((void *) pmap,sizeof(char)*BUFLEN);

close(fd);

printf("umap ok\r\n");

return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值