Как программно получить информацию о накопителях в Linux? (C # MONO) - PullRequest
4 голосов
/ 20 марта 2010

Мне нужно программно получить все накопители, доступные в системе Linux, со следующими полями:

  • Путь
  • Файловая система (FAT32, NTFS и т. Д.)
  • Содержит физический диск

Он должен поддерживать все распространенные типы хранилищ: жесткие диски, Disk-On-Keys, CdRom, Dvd и т. Д.

Как сделать это из C #, чтобы хорошо работать из MONO?

1 Ответ

3 голосов
/ 20 марта 2010

Это довольно просто. Прочитайте содержимое папки / dev / disk / by-path. Файлы в этом каталоге являются символическими ссылками на файлы устройств в / dev. затем вы можете найти общую информацию о них, используя моно порт gudev - вы можете получить один здесь . вам также нужен glib-sharp, чтобы использовать его, он является частью пакета gtk-sharp2 (установите его с помощью менеджера пакетов). используйте как в этом примере:

GLib.GType.Init();
gudev.GUdevClient a=new gudev.GUdevClient(null);            
gudev.GUdevDevice dev=a.QueryByDeviceFile("/dev/disk/by-path/--some-file--");
Console.WriteLine (dev.GetProperty("ID_FS_TYPE")); //will output the file system, eg. ntfs
Console.WrtieLine(dev.GetProperty("ID_FS_LABEL")); //will output the label of the disk

, чтобы получить точку монтирования, вы должны найти фактический файл устройства. Добавьте ссылку на пакет «Mono.Posix» и используйте класс Mono.Unix.UnixSymbolicLinkInfo, чтобы найти этот файл. например:

Mono.Unix.UnixSymbolicLinkInfo sym=new Mono.Unix.UnixSymbolicLinkInfo("/dev/disk/by-path/--some-file--");
Console.WriteLine(sym.ContentsPath); //Will output something like ../../sda1

замените ../ .. на / dev и затем прочитайте файл / etc / mtab. формат файла примерно такой:

/dev/file mountpoint stuff-you-don't-care-about

Каждое устройство в новой строке. поэтому разделить на / п и разделить это на пробел. после этого все просто, и я не думаю, что мне нужно продолжать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...