2017-05-08 8 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と、ファイルにこの出力を置きます。

私は/usr/local/sbin/smartctl -i /dev/<device>で、その後ADA0、ADA1、ADA2、ada3、ada4、DA0を取得したいが、それは情報のgetおよびDA0、CD0のような他のために...自分の名前のセーブこのコマンドで出力を持っていないこと。

これは良い方法であるかどうかわかりません。存在する場合は私にはより良い解決策を与えてください、私の問題を解決するのを助けてください。

答えて

1

ディスクに興味がある場合は、libgeom(3)を代わりに使用することを検討してください。それはプロバイダを得るための機能を提供します。

もう1つの方法として、libcamを使用してcamcontrolのようにデバイスリストを取得し、必要に応じてフォーマットを処理する方法があります。 camcontrolプログラムがこれを行う方法を、camcontrol.cのgetdevlist関数で見ることができます。

+0

ご回答いただきありがとうございます。 ** camcontrol.c **はこのような理由から非常に便利ですが、このコードをどのように使用すればよいか分かりません。例を挙げてください。 Thnks –

関連する問題