2017-05-08 3 views
0

저는 FreeBSD11입니다. 내 시스템에 연결하고 C++로 정보를 저장하는 모든 장치를 가져오고 싶습니다. 이런 이유로 나는 camcontrol devlist 명령을 실행합니다. 출력은 다음과 같습니다디바이스 목록을 C++로 수신

<OCZ-VERTEX4 1.4.1.3>    at scbus0 target 0 lun 0 (pass0,ada0) 
<OCZ-AGILITY3 2.15>    at scbus0 target 1 lun 0 (pass1,ada1) 
<OCZ-AGILITY3 2.15>    at scbus1 target 0 lun 0 (pass2,ada2) 
<OCZ-AGILITY3 2.15>    at scbus1 target 1 lun 0 (pass3,ada3) 
<OCZ-AGILITY3 2.15>    at scbus3 target 0 lun 0 (pass4,ada4) 
< USB FLASH DRIVE PMAP>   at scbus4 target 0 lun 0 (da0,pass5) 

는 난 단지 scbus0 대상 0 LUN 0 (pass0, ada0)에서 에서 라인을 얻을 첫 번째 부분을 무시, C의 ++에 getline으로, 파일이 출력을했습니다.

나는 및 중에서 Da0, CD0 ... 이름 저장이 명령에서 출력이되지 않습니다 같은 다른에 대한 다음 /usr/local/sbin/smartctl -i /dev/<device>ada0, ada1, ada2, ada3, ada4, 중에서 Da0를 얻을이 정보의 싶어 .

좋은 방법인지 확실하지 않습니다. 존재하는 경우 더 나은 솔루션을 제공하거나 제 문제를 해결할 수 있도록 도와주세요.

답변

1

디스크에만 관심이 있다면 libgeom(3)을 대신 사용해보십시오. 그것은 공급자를 얻는 기능을 제공합니다.

또 다른 접근법은 libcam을 사용하여 camcontrol처럼 장치 목록을 가져온 다음 필요에 따라 형식을 처리 할 수 ​​있습니다. camcontrol.c의 getdevlist 기능에서 camcontrol 프로그램이 어떻게 작동하는지 확인할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. ** camcontrol.c **는 이러한 이유로 매우 유용하지만이 코드를 어떻게 사용해야하는지 모르겠습니다. 예를 들어 주시겠습니까? Thnks –