En ce qui concerne le système de fichiers, il n'y a pas de concept de lecteurs sous Unix/Linux (je ne peux pas me porter garant de MacOSX mais je dirais que c'est pareil). La chose la plus proche serait probablement les points de montage, mais une application normale ne devrait pas déranger à leur sujet puisque tout est déjà disponible sous la racine du système de fichiers /
(d'où le comportement de QDir::drives()
que vous observez). Si vous voulez vraiment voir quels points de montage sont utilisés, vous pouvez analyser la sortie de la commande mount
(sans aucun argument) ou, au moins sur Linux, le contenu du fichier /etc/mtab
. Attention cependant, les points de montage peuvent devenir très poilus (périphériques loop, systèmes de fichiers FUSE, partages réseau, ...) donc, encore une fois, je ne recommanderais pas de les utiliser à moins que votre application soit conçue pour les administrer. Gardez à l'esprit que sous les systèmes d'exploitation Unix-y, les points de montage sont normalement réservés aux administrateurs système, et non aux utilisateurs finals, à moins que nous ne parlions de supports amovibles ou de partages réseau transitoires.
Edit: Suite à vos précisions dans les commentaires, sur Linux, vous devez utiliser getmntent
or getmntent_r
pour analyser le contenu du fichier /etc/mtab
et ainsi obtenir une liste de tous les points de montage et les dispositifs correspondants.
L'astuce après cela est de déterminer ceux que vous souhaitez afficher (partage réseau amovible?). Je sais que /sys/block/...
peut aider avec cela, mais je ne connais pas tous les détails, donc vous devrez creuser un peu plus.
Par exemple, pour vérifier si /dev/sdd1
(une clé USB) monté sur /media/usb0/
est un dispositif amovible, vous pouvez le faire (notez comment j'utiliser le nom du périphérique sdd
, pas le nom de la partition sdd1
):
$ cat /sys/block/sdd/removable
1
Contrairement à mon disque dur principal:
$ cat /sys/block/sda/removable
0
espère que cela vous met sur la bonne voie.
Édité ma question pour indiquer les points de montage qui m'intéressent. La solution idéale serait une API système appropriée qui renvoie une liste de chemins de système de fichiers, mais jusqu'à présent, je ne la trouve pas pour aucun système. –
MacOSX est essentiellement BSD à cet égard, et se comporte comme tel - mais avec beaucoup plus d'automatisation de l'automontage que ce que l'on trouve normalement sur * NIX. – marko
@VioletGiraffe Ajout d'informations supplémentaires, pourrait être utile même si c'est encore un peu vague. – syam