【C++】【Linux】S.M.A.R.T.情報を取得する

HDDの健康状態の指標としてS.M.A.R.T.ってのがあるのは皆さん知っての通りだと思う.これを取得するためのライブラリがあるから使ってみた.

環境

ライブラリを試したときのバージョンは以下

  • Ubuntu 18.04 LTS
  • libatasmart
  • clang

ライブラリのインストール

ubuntuであれば以下のコマンドを叩いてlibatasmartというものをインストールする.ほかにもgccとかは入れなきゃだけどそれはそうって感じ.

使ってみる

S.M.A.R.T.対応かどうかを調べる

S.M.A.R.T.情報を取得するにあたって,そもそも対象のディスクが対応しているかどうかがわからない.まぁよっぽどの場合は問題ないと思うけど,確かめるための関数も当然用意されているので使うに越したことはない

各情報を取得してみる

S.M.A.R.T.に対応しているディスクに対しては,以下の方法で基本的な情報を取得できる.

その他の情報

さっき取得した以外の情報は,以下のパース用の関数を使用することで取得することができる.

パース用の関数の第2引数にコールバックを設定し,第3引数には値を格納するための変数を渡してあげる.この変数はコールバックの第3引数に引き継がれるため,コールバック内で取得した値を呼び出し元で取得できる.

具体的には以下の感じで使う

とまぁ今回はこんな感じで全部の情報を取得してみたけど,IDを見て決め打ちで取得することももちろんできる.

他にもいろいろできるっぽいのでドキュメントを見てくれ

ちなみにGtkmmと合わせたこんな感じのGUIツールを作ってみたよっていう報告(https://github.com/koron0902/CocoaDiskInfo)

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です