Почему после записи с memcpy в часть памяти mmaped я не вижу в файле?

Когда я открываю файл после запуска программы, я вижу только первую фразу.

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 ответов

Другие вопросы по тегам