gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:32:34 24 4
gpt4 key购买 nike

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

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

它需要支持所有常见的存储类型:硬盘、Disk-On-Keys、CdRom、Dvd 等。

如何从 C# 执行此操作以从 MONO 良好运行?

最佳答案

其实很简单。读取文件夹/dev/disk/by-path 的内容。此目录中的文件是指向/dev 中设备文件的符号链接(symbolic link)。然后你可以找到一些关于这些的一般信息,使用 gudev 的单端口 - 你可以获得一个 here .你还需要 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

每个设备换行。所以按/n 分割并按空格分割。之后的一切都很简单,我认为我不需要继续。

关于c# - 如何以编程方式获取有关 Linux 中存储驱动器的信息? (C#单声道),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2482992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com