ich in Integer-Überlauf am Laufen, aber ich glaube, ich war falsch, weil es scheint, dass ftell64 und fseek64 sind nicht verfügbar. Ich habe gesucht und viele Websites scheinen mit lseek mit dem off64_t-Datentyp zu referenzieren, aber ich habe keine Beispiele gefunden, die auf etwas verweisen, das fseek entspricht. Im Moment sind die Dateien, die ich lese, 16GB + CSV-Dateien mit der Erwartung von mindestens doppelt so viel.Sucht und große Dateien in einem Linux-C Lesen ++ Anwendung
Ohne externe Bibliotheken, was ist die einfachste Methode, um eine ähnliche Struktur wie mit dem fseek/ftell Paar zu erreichen? Meine Anwendung arbeitet jetzt mit den Standard-GCC/G ++ - Bibliotheken für 4.x.
Also, ich folgte Ihren Anweisungen und alles kompiliert Datei. Aber ich scheine immer noch einen Überlauf zu bekommen. Wie würden Sie den Parameter O_LARGEFILE mit fopen64 verwenden? –
Wenn Sie mit -D_FILE_OFFSET_BITS = 64 kompilieren, wird O_LARGEFILE automatisch geliefert. Dies ist keine Standardflagge. Es wird unter Linux verwendet, um zu verfolgen, ob die Datei mit großen Dateischnittstellen geöffnet wurde. – mark4o
Sie haben die Frage als C++ gestellt, verwenden Sie C-Datei-Operationen mit C++ - Streams und/oder verwenden Sie nur die C-API? Haben Sie auch einen Testcode, um das Verhalten zu reproduzieren? Es ist von größter Wichtigkeit, dass Sie die richtigen Typen verwenden, die sich mit Längen/Offsets befassen. – nos