IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Connaître les partitions du DD


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 204
    Par défaut Connaître les partitions du DD
    Bonjour,
    J'aimerais savoir comment peut-on récupérer les différentes partitions du disque dur ?
    J'aimerais, par exemple, savoir qu'il s'agit d'un système windows ou linux (le nom de la partition en fait).

    J'ai regardé du côté de GIO et j'ai pu écrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <stdlib.h>
    #include <gtk/gtk.h>
    #include <gio/gio.h>
     
    int main (int argc, char *argv[])
    {
        gtk_init (&argc, &argv);
     
        GVolumeMonitor* monitor = g_volume_monitor_get();
        GList* list = g_volume_monitor_get_mounts(monitor);
        while (list != NULL)
        {
            printf("%s\n", g_mount_get_name(list->data));
            list = g_list_next(list);
        }
        g_list_free(list);
     
        return 0;
    }
    Cependant, ma console m'affiche "Media 256 Go" (il s'agit de ma partition windows).
    Alors non seulement il ne m'affiche pas le nom du système d'exploitation de la partition mais en plus il ne le fait pas avec ma partition Ubuntu (partition sur laquelle j'exécute le programme) .
    Auriez vous une idée de comment je pourrais résoudre ce problème ?
    Merci par avance pour vos réponses !

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Peut être en utilisant la fonction g_volume_monitor_get_connected_drives(monitor); à la place de g_volume_monitor_get_mounts(monitor);?

    Une petite remarque qui n'a rien à voir. Il faut libérer la mémoire de chaque élément avec g_object_unref(); avant le g_list_free();

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 204
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Peut être en utilisant la fonction g_volume_monitor_get_connected_drives(monitor); à la place de g_volume_monitor_get_mounts(monitor);?
    Oui j'ai essayé, mais pour les drives, il s'agit de tous les périphériques proposant un espace de stockage (partitions, lecteurs cd/dvd, clé usb je n'ai pas testé) et ne me propose quand même pas la partition linux.

    Et il y avait une troisième fonction g_volume_monitor_get_volumes (qui paraissait la plus crédible pour récupérer mes partitions) mais elle me retournait le même resultat que _get_mounts()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Une petite remarque qui n'a rien à voir. Il faut libérer la mémoire de chaque élément avec g_object_unref(); avant le g_list_free();
    Merci pour l'info (ça fait longtemps que je n'ai plus manipulé GTK+)

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    A première vue, pour récupérer le système de fichier, il faut passer par un GFile.

    Code vala : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    void main ()
    {
      string fs;
      File root;
      FileInfo info;
      VolumeMonitor monitor = VolumeMonitor.get ();
      weak List<Mount> list = monitor.get_mounts ();
     
      foreach (Mount l in list)
      {
        try
        {
          root = l.get_root ();
          info = root.query_filesystem_info (FILE_ATTRIBUTE_FILESYSTEM_TYPE, null);
          fs = info.get_attribute_string (FILE_ATTRIBUTE_FILESYSTEM_TYPE);
          if (fs != null)
          {
            print ("%s: %s\n", l.get_name (), fs);
          }
          else
          {
            print ("%s: Unknow\n", l.get_name ());
          }
        }
        catch (Error e)
        {
          warning (e.message);
        }
      }
    }

    Je bosse sous Windows, j'obtiens bien la partition racine mais pas les systèmes de fichiers :
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Lecteur DVD (D:): Unknow
    OS (C:): Unknow

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 204
    Par défaut
    C'est assez embêtant qu'il ne reconnaisse pas le système de fichier
    Autrement, le code ressemble plutôt à du C++ (c'est du gtkmm ? ) (mais je pense que cela doit être possible avec Gtk+ puisque gtkmm dérive de celui-ci) !
    C'est assez flou en tout cas tout ceci

    Il faudrait peut-être lire les sources de GParted (je pense que c'est un logiciel libre ) et voir les procédés utilisées...
    Je vais m'y lancer dès que j'aurais un peu plus de temps
    En tout cas, je reste ouvert à toutes suggestions

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 204
    Par défaut
    Alors j'ai commencé à lire les sources, et voici ce que j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    read_mountpoints_from_file( "/proc/mounts", mount_info ) ;
    read_mountpoints_from_file_swaps( "/proc/swaps", mount_info ) ;
    read_mountpoints_from_file( "/etc/mtab", mount_info ) ;
    read_mountpoints_from_file( "/etc/fstab", fstab_info ) ;
    Donc ce logiciel lit les points de montage à partir des fichiers. Donc j'imagine que ca marche pas sur Windows... (jamais essayé d'ailleurs sur Windows )
    Mais quand je fais la commande "sudo gedit /proc/swaps" gedit ne m'affiche rien...

    Je me demande si c'est une bonne piste de trouver les partitions à partir de ces fichiers
    Je ne sais pas quand est-ce que ces fichiers sont crées/éditées... Une petite recherche sur internet s'impose !!

    Edit : Avec Vim et du côté du fichier /proc/partitions, je tombe sur toutes les partitions que je veux... Petit problème, c'est que je connais le système de fichier utilisé (ntfs, fat32, ext3, ...)

Discussions similaires

  1. [appli console] Repertorier les partitions d'1 système
    Par Le_magicien999 dans le forum MFC
    Réponses: 11
    Dernier message: 18/08/2005, 13h30
  2. Comment connaître les fonctions d'une DLL ?
    Par bencot dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 15/06/2005, 09h25
  3. Réponses: 4
    Dernier message: 03/02/2005, 14h16
  4. Connaître les differentes bases présentes
    Par Drahu dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/03/2004, 13h31
  5. Réponses: 5
    Dernier message: 06/03/2003, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo