Como faço para filtrar montagens “úteis” de / etc / mtab ou / proc / mounts?

3

Atualmente estou escrevendo uma abstração básica do sistema de arquivos (em C ++) e preciso obter uma lista de dispositivos montados "úteis" no linux.

Encontrei as funções getmntent / getmntent_r que permitem analisar facilmente /etc/mtab e /proc/mounts , mas muitos dos dispositivos montados não são "úteis" (por exemplo:% código%). Em particular, estou tentando encontrar montagens relacionadas a um dispositivo físico, partição ou compartilhamento de rede / unidade.

O mais próximo que encontrei é verificar se o /sys/fs/cgroup/net_cls (nome do dispositivo) começa com mnt_fsname , o que no caso do meu sistema o reduz a:

  • /

  • /

  • /boot

  • /run/media/[username]/0CA8-1F2D

O que parece ser o que eu quero (os dois últimos sendo partições em um pendrive). Eu não tive a chance de experimentar um compartilhamento de rede / dispositivo com ele.

Basicamente, isso deve ser uma aproximação de "drives" semelhantes a janelas, por isso estou interessado em dispositivos físicos, etc., mas não impede que um usuário de biblioteca navegue para dispositivos não listados se assim desejar. / p>

Então, basicamente, a pergunta também se resume:

  • Se o nome do dispositivo em uma entrada de montagem começar com /run/media/[username]/14E0-3E80 , será garantido que seja um dispositivo físico, partição ou compartilhamento de rede?

  • Vou deixar de fora algo particularmente importante / útil?

  • Existe uma maneira melhor / mais precisa de fazer isso?

por LivePastTheEnd 29.07.2016 / 19:16

1 resposta

1

Eu não acho que haja uma noção de "montagens úteis" que faça sentido em todos os cenários. Você deseja incluir unidades físicas removíveis e montagens de rede e excluir sistemas de arquivos para acesso ao sistema, como os que estão em /dev , /proc e /sys . E quanto aos sistemas de arquivos montados pelo usuário? Saber que um sistema de arquivos é fornecido pelo FUSE não lhe diz o que é. Poderia ser um arquivo, uma montagem de rede, uma visão alternativa de um diretório, uma imagem de disco, uma maneira de controlar algum programa,…

Verificar se o nome do dispositivo começa com / não parece útil para mim. Por exemplo, incluiria montagens de ligação e excluiria montagens de rede.

Acho que o melhor que você pode fazer é não reinventar a roda. Se nada mais, usando o mesmo mecanismo que os outros, você não vai confundir seus usuários (“por que o X lista esse sistema de arquivos, mas não o Y ???”). Além disso, há uma chance de que o que os outros fizeram possa fazer sentido.

Então, minha recomendação é usar bibliotecas do Gnome, pelo menos GTK +. O GTK + tem uma caixa de diálogo de abertura de arquivos que mostra alguns sistemas de arquivos montados em “Locais”. Os usuários podem controlar o que está listado lá até certo ponto - < href="https://unix.stackexchange.com/questions/198996/prevent-the-gtk-file-dialog-from-listing-mount-points"> se eles puderem descobrir isso , ou seja, . Mesmo que você não mostre o diálogo de abertura de arquivos do GTK +, use a mesma lista de “lugares” (não sei como obter isso, veja a documentação da API).

    
por 30.07.2016 / 02:42