Article View: pl.comp.os.linux.programowanie
Article #72704Re: Mapowanie pliku fizycznego do pamięci
From: Borneq
Date: Sun, 17 Aug 2014 06:41
Date: Sun, 17 Aug 2014 06:41
29 lines
2585 bytes
2585 bytes
W dniu 2014-08-16 o 22:03, Adam Osuchowski pisze: > Chyba nie bardzo rozumiem jaki masz problem i o co chodzi z tym dużym > buforem. Mógłbyś to opisać jaśniej? Właśnie robię komponent do podglądu wielkich plików, które nie będą ładowane w całości do pamięci. Na przykład pliki do kilkugigowe dumpy w postaci XML. Robię to z użyciem biblioteki FLTK więc przenośnie Linux<>Windows Pierwsze podejście było strumeniowe z użyciem plików i seek. Gdy poruszam suwakiem, wybieram pozycję w pliku np. 50% pliku, 100% czyli koniec. Gdy mam jakąś pozycję, w obsłudze PAINT muszę cofnąć się do początku linii, czasem też o kilka, nawet 40 linii gdy wyświetlam koniec pliku. Przeważnie do wyświetlania 40 linii po 100 znaków wystarcza bufor 4 kilo do którego ładuję, jednak co gdy linie będą dłuższe? Drugi raz ładować mam ze strumienia do bufora i jeszcze raz? Co gdy na granicy części ładowanych będzie windowsowy znak podziału linii 13,10? Chyba że od razu będę używał bufora gdzie zmieści się 40 najdłuższych linii, ale mogą być bardzo długie (np. plik może być binarny) > mmap() mapuje obszar pliku (w szczególności cały plik) w pamięci pod > zadanym przez użytkownika lub ustalonym automatycznie przez system adresem. A jak go uzyć? Jako parametr ma uchwyt otwarty przez open()? http://man7.org/linux/man-pages/man2/mmap.2.html void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); addr może być NULL?, lengh to 32 bitowa wartość, prot to PROT_READ? offset to 64 bitowy początek mapowania w pliku?
Technical Details
Message-ID:
<lspiqk$qoq$1@node2.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<lsoagf$2mv$1@node1.news.atman.pl> <20140816200303.6b8b4567@polsl.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: Borneq <borneq@antyspam.hidden.pl> Newsgroups: pl.comp.os.linux.programowanie Subject: Re: Mapowanie pliku fizycznego do pamięci Date: Sun, 17 Aug 2014 08:41:14 +0200 Organization: ATMAN - ATM S.A. Lines: 29 Message-ID: <lspiqk$qoq$1@node2.news.atman.pl> References: <lsoagf$2mv$1@node1.news.atman.pl> <20140816200303.6b8b4567@polsl.pl> NNTP-Posting-Host: 91.239.205.62 Mime-Version: 1.0 X-Trace: node2.news.atman.pl 1408257684 27418 91.239.205.62 (17 Aug 2014 06:41:24 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Sun, 17 Aug 2014 06:41:24 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.0 In-Reply-To: <20140816200303.6b8b4567@polsl.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit