[linux] mmap

zya369

есть прога с таким куском кода:

map = mmap(0, read_size, PROT_READ, MAP_PRIVATE, fd, bytes_read);
if(map == MAP_FAILED)
return 1;
pos = map;

while(sscanf(pos, "%s", buf) == 1)
{
printf("S = %s\n", buf);
len = strlen(buf);
pos += len + 1;
bytes_read += len + 1;
}
munmap(map, read_size);
в файле, который мапится, много записей.
Почему этим куском кода считываются они все, хотя read_size маленький (много меньше размера файла) ?

vall

>много меньше размера файла
и много меньше размера страницы?
мапится постранично

zya369

точно?
man said:
void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);
The mmap function asks to map length bytes ...

zya369

да... почитал ман дальше - там и вправду кое-где сказано про то, что length должно быть кратно pagesize ^)
буду рюхать дальше
Оставить комментарий
Имя или ник:
Комментарий: