我已经下载了Sigar API(http://support.hyperic.com/display/SIGAR/Home),想在项目中使用它来获取不同正在运行的进程的信息。但是,我无法找到一些有用的代码片段进行学习,并且从他们网站上的javadoc中也没有什么帮助,因为我不知道应该寻找什么。您是否有任何想法,在哪里可以找到更多信息?
ProcessFinder
来查找PID。 查找单个进程PID的方法是findSingleProcess(String expression)
。示例: Sigar sigar=new Sigar();
ProcessFinder find=new ProcessFinder(sigar);
long pid=find.findSingleProcess("Exe.Name.ct=explorer");
ProcMem memory=new ProcMem();
memory.gather(sigar, pid);
System.out.println(Long.toString(memory.getSize()));
表达式语法如下:
Class.Attribute.operator=value
在哪里:
Class is the name of the Sigar class minus the Proc prefix.
Attribute is an attribute of the given Class, index into an array or key in a Map class.
operator is one of the following for String values:
eq - Equal to value
ne - Not Equal to value
ew - Ends with value
sw - Starts with value
ct - Contains value (substring)
re - Regular expression value matches
operator is one of the following for numeric values:
eq - Equal to value
ne - Not Equal to value
gt - Greater than value
ge - Greater than or equal value
lt - Less than value
le - Less than or equal value
findSingleProcess("Exe.Name.ct=explorer");
,就像你说的那样,但是我得到了这个错误 org.hyperic.sigar.SigarException: Query did not match any processes
。而且我可以在任务管理器中看到 explorer.exe
进程正在运行。 - AlvarolikefindSingleProcess("State.Name.ct=explorer");
bindings\java\examples
下提供了大量的使用示例。不妨看一看。Hyperic网站似乎已经消失了,但是这篇https://layer4.fr/blog/2016/10/10/os-monitoring-with-java/文章告诉您如何将Sigar与Java连接起来。您需要将sigar-amd64-winnt.dll文件放置在DLL路径上(例如C:\Windows)