为什么用memcpy写入内存部分的mmaped后,我在文件中看不到?

时间:2015-07-23 21:58:45

标签: c mmap memcpy

当我在程序运行后打开文件时,我只看到了第一个短语。

void writeInFileMmaped(){

void* file_memory=NULL;
char* path="/home/testFile";
int fdTest=0;
struct stat bufTest;

char *phrase= "Hi, I'm a phrase";

//Make a file with 20M
system("truncate -s 20M /home/testFile");

//Open testFile
if((fdTest=open(path,O_RDWR))==-1){
    perror("open testFile");
    exit(EXIT_FAILURE);
}

if(fstat(fdTest,&bufTest)==-1){
    perror("stat");
}

file_memory=mmap(0, bufTest.st_size, PROT_READ|PROT_WRITE, MAP_SHARED, fdTest,0);

if(file_memory==MAP_FAILED){
    close(fdTest);
    perror("Error mapping the file");
    exit(EXIT_FAILURE);
}
memcpy(file_memory,phrase,strlen(phrase));
printf("%sn",file_memory);
memcpy(file_memory+100, phrase,strlen(phrase));
printf("%sn",file_memory+100);

}

输出很好,但在文件中只显示“嗨,我是一个短语” 我尝试使用sprintf,结果是一样的。 我认为是NULL的问题

0 个答案:

没有答案