Schnelle Datei kopieren mit Fortschritt

Schreibe ich eine SDL-Anwendung für Linux, die Werke aus der Konsole (kein X-server). Eine Funktion, die ich habe ist eine Datei-Kopier-Mechanismus, dass Kopien bestimmter Dateien von der Festplatte auf USB-Flash-Gerät, und zeigen den Fortschritt dieser Kopie in der Benutzeroberfläche. Um dies zu tun, ich bin mit der einfachen while-Schleife und das kopieren einer Datei von 8 kB-Blöcken zu erhalten, kopieren Sie den Fortschritt. Das problem ist, dass es langsam ist. Bekomme ich für das kopieren einer 100 MB Datei in knapp 10 Minuten, was nicht hinnehmbar ist.

Wie kann ich das implementieren schneller kopieren? Ich dachte über einige asynchrone API, würde das Lesen der Datei von der Festplatte in einen Puffer und speichert die Daten auf USB in einem separaten thread, aber ich weiß nicht, ob ich das umsetzen sollte, es selbst, weil es nicht aussieht wie eine einfache Aufgabe. Vielleicht kennen Sie einige C++ - API/Bibliothek, kann das für mich? Oder vielleicht eine andere, bessere Methode?

  • "Ich bin mit der einfachen while-Schleife und das kopieren einer Datei von 8 kB-Blöcken zu erhalten, kopieren Sie den Fortschritt." - das ist ähnlich wie standard - cp funktioniert. Sind Sie sicher, dass es nichts anderes gibt, es langsamer? Sind Sie sicher, dass Ihr USB-Laufwerk nicht sync mount-option? Linux optimiert für solche Fälle, 100 MB in 10min - Ihr problem ist nicht das OS, sondern in Ihrer eigenen Anwendung.
InformationsquelleAutor mav | 2010-10-09
Schreibe einen Kommentar