Я хочу создать файл и отобразить его в память. Я думаю, что мой код будет работать, но когда я запустил его, я получаю «ошибку шины». Я искал google, но я не уверен, как исправить эту проблему. Вот мой код:Ошибка открытия шины и mmap'ing файла
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/mman.h>
#include <string.h>
int main(void)
{
int file_fd,page_size;
char buffer[10]="perfect";
char *map;
file_fd=open("/tmp/test.txt",O_RDWR | O_CREAT | O_TRUNC ,(mode_t)0600);
if(file_fd == -1)
{
perror("open");
return 2;
}
page_size = getpagesize();
map = mmap(0,page_size,PROT_READ | PROT_WRITE,MAP_SHARED,file_fd,page_size);
if(map == MAP_FAILED)
{
perror("mmap");
return 3;
}
strcpy(map, buffer);
munmap(map, page_size);
close(file_fd);
return 0;
}
Использовать отладчик (так что скомпилировать с помощью 'gcc -Wall -g' и debug с' gdb') –
У вас есть переменная 'page_size', но вы, кажется, используете' pege_size' в своем вызове 'mmap() ' –
' addr' в 'mmap()' должен быть 'NULL', а не' 0'. – yegorich