我正在尝试阅读有关该设备的一些基本信息(在Solaris机器中),如no。 CPU,没有。硬盘驱动器,没有。网络适配器等...
据我所知,我们无法直接从Java获取这些信息。 (如果我错了,请纠正我。)
因此,解决方法是调用JNI调用。
现在,我如何在C / C ++中编写代码? C中是否有任何现有的系统调用/方法来获取这些信息?
我试图避免在C中使用system()方法,因为我想将信息存储为字符串。
我知道有一些shell命令,比如iostat,kstat,ifconfig等......但是如何在我的C / C ++程序中模拟它们呢?
谢谢,
答案 0 :(得分:1)
/proc filesystem有很多信息供您解析。例如,iostat读/ proc / diskstats。那里有更多,而且大多数linuxs utilitiy程序只是从这里读取信息。
至少,如果你留在linux或solaris上,你甚至不需要JNI来获取所有信息。
答案 1 :(得分:1)
对于Java解决方案,JNI的替代方法是使用Java的Runtime.exec()
来执行系统命令。这是一个简单的例子:
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("/bin/cat /proc/cpuinfo");
process.waitFor();
InputStream in = process.getInputStream();
// read stdout contents from InputStream and parse accordingly
请注意,这有缺点:
答案 2 :(得分:0)
在JNI中编码(绑定到C)
javac
编译“.java”
将文件转换为“.class”文件javah
工具提取C
来自/ C ++兼容的头文件
已编译的“.class”文件。.so
for
unix / linux,.dll
for windows)。至于如何获取所需数据,请参阅Windows或UNIX的任意数量的系统编程参考。如果针对Linux平台,大多数工具都是开源的,因此您可以查看源代码以确定工具如何获取其数据(假设您可以接受此类任务可能对您的代码施加的许可限制)