Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: "Invalid Argument" bei read und write

  Alt 12. Nov 2006, 20:44
Hallo Andreas,

kennt dein C++-Compiler keinen stream i/o? Wenn nicht, dann halte ich 4GB für einen verdammt großen Puffer - 64KB wären wohl eher angebracht. Auch würde ich prüfen ob mindestens 2 Pfade vorhanden sind, bevor ich die Arbeit aufnehme. Die Laufvariable i scheint mir auch hoffnungslos überdimensioniert zu sein. Warum öffnest du die Quelldateien für Lesen und Schreiben? Musst du die Größe der Quelldatei durch lseek() bestimmen? Das geht bestimmt auch direkt (fsize?) über die Metadaten im Verzeichniseintrag. Die Verarbeitungsschleife scheint mir unbrauchbar zu sein. Ein brauchbares Muster stelle ich mir etwa so vor:

Code:
// ...
        rest = groesse;
        while (rest > 0) { 
               gelesen = read(quelldatei, buffer, BUF_SIZE);
               geschrieben = write(zieldatei, buffer, gelesen);
               rest -= geschrieben;
        }

// ...
Hierbei unterstelle ich, dass die Schreib- und Leseaufrufe die tatsächlich verarbeiteten Mengen zurückgeben.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat