当我在程序运行后打开文件时,我只看到了第一个短语。
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的问题