#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<sys/mman.h>
#include<string.h>
#include<stdio.h>
#define LEN 80
int main(void)
{
int fd=-1;
char *buf="quick brown fox jumps over the lazy dog.";
char *ptr=NULL;
char *temp="aaa";
//open test.txt
fd=open("test.txt",O_RDWR|O_CREAT|O_TRUNC,S_IRWXU);
if(-1==fd)
{
printf("open file failed.\n");
return -1;
}
int ls=lseek(fd,LEN-1,SEEK_SET);
//之前int size=write(fd,'a',1)写入失败,看样子这本参考书上的例子有问题
int size=write(fd,temp,2);//用字符缓存 ,写入正常
ptr=(char*)mmap(NULL,LEN,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
if((char*)-1==ptr)
{
printf("mmap failed.\n");
close(fd);
return -1;
}
memcpy(ptr+16,buf,strlen(buf));
munmap(ptr,LEN);
close(fd);
return 0;
}