私は最近、プログラムを使用して、複数のハードドライブからハードドライブ情報(シリアル、メーカー、タイプなど)を監視します。私の初期の研究では、これはC#コードを使用して簡単に実行でき、そのようなテストプログラムを作成したことがわかりました。残念ながら、私はLinux OSを使用する必要があります。これは、C#がテーブルから外れていることを意味します。
誰かが知っていれば私は興味があった、または私を指すことができるJava / C / C ++のアプリケーションを開発する正しい方向で、同じ効果を得ることができます。 Javaを使用する場合、JNIを使用する必要があり、その時点でC / C ++を使用する必要があることはわかります。
ありがとう。
回答:
回答№1は2必要な正確な情報に応じて、JNIを使用する必要はありません。
Linuxは、ハードウェアに関する多くの情報を sysfs そして procfs 仮想ファイルシステム。たとえば、/ sys / block / sda / device / modelにある最初のディスクのハードディスクモデルは、他のファイルと同様にJavaで読み込むことができます。
さらに、あなたは fdisk -l /dev/sda" and
hdparm -I / dev / sdawhich both provide quite a bit of information. You can call these using
Runtime.exec() `を呼び出し、出力を解析します。
回答№2の場合は1
私はあなたの人生を楽にするJavaライブラリは認識していませんが、異なるOSをサポートするOSに依存しないソリューションを実装したい場合は、 java.lang.Runtime 外部プロセスを実行することができます。 必要な情報を取得するための(CLI)コマンドを定義する各OS用のマップを維持することができます。 JNIを使用して多数のネイティブコールを実装する方が簡単かもしれません。
Process p = Runtime.getRuntime().exec("df -h");
p.waitFor();
InputStream is = p.getInputStream();
/* work with command line output... */
私はそれが完璧な解決策ではないことを知っていますが、あなたはそれを見てみたいかもしれません。