Lesen von der Festplatte Sektoren, die in C++ unter Linux
Wie liest du die Festplatte Sektoren in C++ mit gcc/linux? Ist es eine standard-Bibliothek, die ich nutzen kann oder muss etwas heruntergeladen? In Windows kann ich CreateFile(...) Zugriff auf raw-Festplatten-Sektoren, aber ich weiß nicht, wie es zu tun ist in Linux.
Bin ich mit dem GCC auf Ubuntu LTS 10.4. Danke für Eure Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Festplatte ist einfach nur eine weitere Datei (und nicht eine "normale Datei", sondern ein "device-Datei", aber immer noch, eine Datei). Öffnen Sie es auf die normale Art...
Erhalten Sie die Erlaubnis Fehler, es sei denn, Sie haben die richtigen Berechtigungen. Beachten Sie, dass
"/dev/sda1"
ist nur ein Beispiel, es ist die erste partition auf der Festplattesda
, der genaue Pfad hängt von Ihrem system. Sie können die Liste der mount-Punkte mit dermount
Befehl, und Sie können ganze Festplatten (anstatt nur Partitionen) mit/dev/sda
,/dev/sdb
usw.Konnte Sie auch öffnen, es als C++
fstream
oder CFILE
, aber ich empfehle nicht, dies. Sie haben eine bessere Zeit auf der Suche nach Beispiel-code und erste-Hilfe-Foren, wenn Sie verwendenopen
statt./dev/sda1
wäre eine partition... für raw-Laufwerk zugreifen, würden Sie wahrscheinlich wollen zu verwenden/dev/sda
dd
. Vorsichtig sein, von Berechtigungen, Sie wahrscheinlich müssen entweder ein Mitglied der Gruppe disk oder root (keine gute Idee, dies zu tun.Wie andere schon richtig hingewiesen -, Datenträger-Zugriff auf Linux (und anderen Unix-ähnlichen Betriebssystemen) ist über ein Gerät spezielle Datei. Auf meinem Ubuntu-laptop, meine Festplatte heißt "/dev/sda".
Da Sie speziell Fragen, wie es in C++ (und nicht nur, wie es in Linux), hier ist, wie zu Lesen, ein Sektor mit
std::ifstream
.können Sie dump disk-Sektoren in eine Datei mit dem dd-Befehl und lese die erzeugte Datei