LINUX.ORG.RU

Большие файлы


0

0

подскажите ламаку плиз,как организовывается нечто подобное когда для чтения большего файла используется файловый указатель который отображается в память к сожалению не могу это реализовать

log_file = open(log_file_path, O_RDONLY | O_NONBLOCK)) .. init_file_ptr[0] = 0; ptr_file = open(PTR_FILE, O_RDWR | O_CREAT | O_EXLOCK, 0666); if (ptr_file<0) { warn ("Can not open ptr file %s:%s\n", PTR_FILE, strerror(errno)); die(2); } b_read = read(ptr_file, init_file_ptr, sizeof(off_t)); if (b_read==-1) { warn ("Can not read from ptr file %s:%s\n", PTR_FILE, strerror(errno)); close(ptr_file); die(2); } if (!b_read) { b_read = write(ptr_file, init_file_ptr, sizeof(off_t)); if (b_read<=0) { warn ("Can not write to ptr file %s:%s\n", PTR_FILE, strerror(errno)); close(ptr_file); die(2); } } file_ptr = (off_t*) mmap(0, sizeof(off_t), PROT_READ | PROT_WRITE, MAP_SHARED, ptr_file, 0); .. lseek(log_file, *file_ptr, SEEK_SET);

anonymous

Та же самая проблема - требуется обработать очень большой файл. В Окнах есть механизм отображения файлов на память. Как реализовать нечто подобное в Linux?

necromant ★★
()

Не понял вопроса.

Что такое "файловый указатель который отображается в память"?

Die-Hard ★★★★★
()
Ответ на: комментарий от necromant

> В Окнах есть механизм отображения файлов на память.

Однако, почти весь Линух построен на таком механизме!

man mmap

Die-Hard ★★★★★
()
Ответ на: комментарий от jek_

jek_ (17.10.2005 13:06:16):

> Больше 4-х гб? mmap64?

Наверное...

Тогда можно просто -D_FILE_OFFSET_BITS=64 подставить в gcc, и обычный mmap позволит задавать длинные смещения.

Die-Hard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.