Re: Einlesen aus Datei > 2GB
Dierk Fröhling <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Organization | aycan |
| Message-ID | <[email protected]> |
Michael Wenger wrote:
> Hi Christian!
>
> Christian Schneider schrieb am 02.06.2005 15:33 :
>
>> ich habe ein kleines C++-Programm geschrieben, mit dem ich aus einer
>> Datei lesen und in dieser einige Änderungen vornehmen will. Ich
>> benutze ifstream. Nun will ifstream aber nicht mit Dateien ab einer
>> Größe von 2GB (weil der Position-Pointer nicht mehr schafft?).
>>
>> Wie lese ich aus Dateien > 2GB bzw. schreibe in diesen? Bei
>> C-Funktionen wird scheinbar nur ein long zur Positionierung verwendet,
>> also ist da auch bei 2GB Schluss?
>
>
> Das hängt extrem vom verwendeten Compiler ab. Ab g++ 3.4 sollte es mit
> C++ möglich sein. Auf [1] steht zumindest dies:
> | Large File Support (files larger than 2 GB on 32-bit systems).
>
> Für den gcc gibt es Compilerflags:
> -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
>
> Gruß,
> Michael
>
> [1] http://gcc.gnu.org/gcc-3.4/changes.html
>
>
Außerdem könnte es am Filesystem liegen. ext2 hatte früher z.B. ein
2GB-Limit...
Falls das Filesystem mitspielt, könnte evtl. auch Memory Mapped I/O
helfen (einfach mal man mmap und weitere...). Dann verhält sich die
Datei wie Speicher (also wilde Zeigerspiele!).
Gruß,
Dierk
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
[email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]