Kopierprogramm
-
Hi hab ein kleines Programm geschrieben welches eine Datei Kopiert. Hab das ganze mit den open, read und write befehl realisiert (Systemprogrammierung). Jetzt hab ich das Problem das ich das ganze so erweitern soll das auch Dateien größer 2 GiB kopiert werden können. Kann mir da jemand einen denkanstoß geben was mein Prof damit meint. Schon mal Danke
-
Das heißt, dass du auf Uraltsystemen mit dem Makro _FILE_OFFSET_BITS == 64 compilieren sollst. Und auf neueren Systemen schadet es nicht weiter. Ansonsten musst du aufpassen, dass, wenn du zum Beispiel Blocks mit mehreren GB am Stück einliest (was wahrscheinlich keine so tolle Idee ist), dass deine Größenangaben auch von einem Typ sind, der diese Größen darstellen kann. 8*1024*1024*1024 für 8 GB wäre beispielsweise falsch auf Systemen mit 32-Bit ints, da 8 und 1024 beides ints sind und die Multiplikation daher überläuft.Dann müsstest du so etwas wie 8ULL * 1024 * 1024 * 1024 schreiben, damit das Ergebnis unsigned long long ist.
Guckst du beispielsweise hier:
http://www.gnu.org/software/libc/manual/html_node/File-Positioning.html
-
Ausserdem wäre es noch nett wenn der Kopiervorgang nicht das gesamte System in der Zeit lahmlegt und man nebenbei nix anderes mehr machen kann.