我需要编程方式获取Linux系统中所有可用存储驱动器,包括以下字段:
如何使用C#实现,并能在MONO上正常运行?
- 路径
- 文件系统(FAT32、NTFS等)
- 包含的物理磁盘
如何使用C#实现,并能在MONO上正常运行?
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。文件的格式大致如下:
每个设备占一行,所以按 /n 分割,然后按空格分割。之后的内容很简单,我认为不需要继续解释。/dev/file mountpoint stuff-you-don't-care-about