繁体   English   中英

如何以编程方式获取有关Linux中的存储驱动器的信息? (C#MONO)

[英]How to programmatically get info about storage drives in linux? (C# MONO)

我需要通过以下字段以编程方式获取Linux系统中的所有存储驱动器:

  • 路径
  • 文件系统(FAT32,NTFS等)
  • 包含物理磁盘

它需要支持所有常见的存储类型:硬盘,磁盘上键,CdRom,Dvd等。

如何从C#中做到这一点从MONO运行良好?

这很简单。 读取文件夹/ 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

要获取mountpoint,您应该找到实际的设备文件。 添加对“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 

新设备中的每个设备。 因此用/ n分割并按空格分割。 之后的任何事情都很简单,我认为我不需要继续。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM