我最近的任务是开发一个程序来监控来自多个硬盘驱动器的一堆硬盘驱动器信息(串行,制造商,类型等)。在我最初的研究中,我发现使用一些C#代码很容易做到,并以这种方式创建了一个测试程序。不幸的是,我需要使用Linux操作系统,这意味着c#不在桌面上。
我很好奇,如果有人知道,或者可以指出我正在开发一个可以达到同样效果的Java / C / C ++应用程序的正确方向。我知道,如果你使用Java,你必须使用JNI,然后你就可以使用C / C ++了。
感谢。
答案 0 :(得分:2)
根据您需要的确切信息,可能不需要使用JNI。
Linux提供了有关sysfs和procfs虚拟文件系统中可用硬件的大量信息。例如,您可以在/ sys / block / sda / device / model中找到第一个磁盘的硬盘模型,您应该能够像在任何其他文件中一样使用Java读取它。
此外,您可以查看fdisk -l /dev/sda' and
hdparm -I / dev / sda which both provide quite a bit of information. You can call these using
Runtime.exec()`的输出并解析输出。
答案 1 :(得分:1)
我不知道任何Java库让您的生活更轻松,但如果您想实现支持不同操作系统的独立于操作系统的解决方案,您应该查看java.lang.Runtime,这样您就可以执行外部进程。您可以为每个操作系统维护一个映射,定义用于检索所需信息的(CLI)命令。它可能比使用JNI实现一堆本机调用更容易:
Process p = Runtime.getRuntime().exec("df -h");
p.waitFor();
InputStream is = p.getInputStream();
/* work with command line output... */
我知道这不是一个完美的解决方案,但你可能想看看它。