Ich verwende ein C-Programm open(), close(), read(), write()
Technik, um eine große Datei auf RAW-Datenträger zu kopieren. Die Datenträgergröße beträgt 20 GB und die Dateigröße beträgt 17 GB, aber jedes Mal nach dem Schreiben 945 MB write()
löst No space left on device
Fehler.C: write() schlägt fehl, während auf eine RAW-Platte geschrieben wird, nachdem eine bestimmte Größenbeschränkung erreicht wurde
ich fdisk -l /dev/sdb
gelaufen und gibt 20,5 GB und du /dev/sdb
sagt 945126569
Dann habe ich versucht, es zu cat mylargefile > /dev/sdb
wirft gleichen No space left on device
Fehler und dann mache ich cat /dev/sdb > /tmp/sdb.img
es abgeschlossen ist normal. Dann mache ich ls -ld /tmp/sdb.img
es reagiert 945126569
ich die gleiche Festplatte verwenden können ext4
Dateisystem zu erstellen und formatieren ohne Probleme, so Plattenfehler ist unwahrscheinlich. (Ich denke ...)
Ich benutze Ubuntu 16.04 LTS amd64 OS mit neuesten GCC, um mein Programm zu bauen.
Kann jemand vorschlagen, wo ich falsch liege oder was getan werden muss, um dies zu vermeiden?
'du/dev/sdb' sollte sagen ** 0 **. –
Denken Sie daran, dass die Plattengrößen normalerweise ein Vielfaches von 1000 sind, während die Dateigrößen ein Vielfaches von 1024 sind. Haben Sie diese Diskrepanz überprüft? –
@Someprogrammerdude pebkac Fehler. –