Hallo! Am Donnerstag, 2. Juni 2005 16:53 schrieb Dierk Fröhling:
Michael Wenger wrote:
Christian Schneider schrieb am 02.06.2005 15:33 :
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).
Werde mal einen neueren installieren.
Für den gcc gibt es Compilerflags: -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
Die muss ich bei gcc >= 3.4 mit angeben? Wo ist sowas dokumentiert (auf gcc.gnu.org findet sich dazu nichts)?
Außerdem könnte es am Filesystem liegen. ext2 hatte früher z.B. ein 2GB-Limit...
Nein, das spielt mit. Die Datei ist schon vorhanden und liegt auf einem recht neuen (= jünger als 2 Jahre) ext3 Dateisystem.
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!).
Das werde ich mal im Hinterkopf behalten, allerdings wäre mir was halbwegs idiotensicheres schon lieber. Das mit den Zeigern klingt gar nicht danach. ;-) Danke für die Hinweise. Gruß, Christian