11
votes

Lecture des secteurs du disque dur en C ++ sur Linux

Comment lisez-vous les secteurs du disque dur en C ++ avec GCC / Linux? Y a-t-il une bibliothèque standard que je peux utiliser ou quelque chose doit être téléchargé? Sous Windows, je peux utiliser Createefile (...) pour accéder aux secteurs des disques bruts, mais je ne sais pas comment faire à Linux.

J'utilise GCC sur Ubuntu LTS 10.4. Merci pour votre aide.


0 commentaires

3 Réponses :


16
votes

Le disque dur n'est qu'un autre fichier (pas un "fichier régulier" mais un "fichier de périphérique", mais toujours un fichier). Ouvrez la voie normale ...

int fdes = open("/dev/sda1", O_RDONLY);
if (fdes < 0)
    err(1, "/dev/sda1");
... do more ...


3 commentaires

/ dev / sda1 serait une partition ... Pour l'accès à la section RAW, vous voudrez probablement utiliser / dev / sda


+1 pour "juste un autre fichier" et ne pas jouer avec dd . Méfiez-vous des autorisations, vous devrez probablement être membre du groupe de disque ou de la racine (pas une bonne idée) de le faire.


Que cela sera très utile.



1
votes

Vous pouvez jeter des secteurs de disque vers un fichier avec la commande DD et lire le fichier généré


0 commentaires

11
votes

Comme d'autres personnes ont signalé correctement, l'accès au disque sur Linux (et d'autres systèmes d'exploitation de type UNIX) via un fichier spécial de périphérique. Sur mon ordinateur portable Ubuntu, mon disque dur est nommé "/Dev/sda"..p>Sant que vous demandez spécifiquement comment le faire en C ++ (pas simplement comment le faire sous Linux), voici comment lire un secteur en utilisant < Code> std :: ifstream . xxx


2 commentaires

Savez-vous comment acquérir la taille du secteur d'un disque?


@Patriknusszer - Peut-être que ceci: Stackoverflow .Com / Questions / 8416241 / ...