2010-03-20 2 views
3

내가해야 할 프로그램은 다음 필드가있는 리눅스 시스템의 모든 스토리지 드라이브를 사용할 수 :프로그래밍 방식으로 리눅스에서 스토리지 드라이브에 대한 정보를 얻으려면 어떻게해야합니까? (C#을 MONO)

  • 경로
  • 파일 시스템 (FAT32, NTFS 등)
  • 물리적 디스크
  • 을 포함하는

그것은 모든 일반적인 스토리지 유형을 지원해야합니다 하드 디스크, 디스크 온 키, CD-ROM, DVD 등

C 번호에서이 일을 얼마나 잘 실행 모노에서?

답변

3

매우 간단합니다. /dev/disk/by-path 폴더의 내용을 읽습니다. 이 디렉토리의 파일은/dev에있는 장치 파일에 대한 심볼릭 링크입니다. 그런 다음 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으로 나눠서 공간으로 나눕니다. 그 후에는 아무 것도 간단하지 않고 계속할 필요가 없다고 생각합니다.