import java.io.BufferedReader
import java.io.File
import java.io.FileWriter
import java.io.IOException
import java.io.InputStream
import java.io.InputStreamReader
import java.io.PrintWriter
public class GetPid {
private static final String PNAME = "QQ"烂绝侍
public static void main(String[] args)
throws IOException {
System.out.println("包含关键字 "+PNAME+" 的进程有:")
System.out.println()
String path = System.getProperty("user.dir")
final File createFileName = new File(path + "\\mytempscript.vbe")
if(createFileName.exists()?createFileName.delete():createFileName.createNewFile()){}
final PrintWriter pw = new PrintWriter(new FileWriter(createFileName,
true), true)
pw.println("for each ps in getobject(\"winmgmts:\\\\.\\root\\饥吵cimv2:win32_process\").instances_")
pw.println("wscript.echo ps.handle&vbtab&ps.name")
pw.println("next")
pw.close()
final InputStream ii = Runtime.getRuntime().exec(
"cscript " + path + "\宏缺\mytempscript.vbe").getInputStream()
final InputStreamReader ir = new InputStreamReader(ii)
final BufferedReader br = new BufferedReader(ir)
String str = null
String[] ss = null
while ((str = br.readLine()) != null) {
if (str.indexOf(PNAME)>0&&str.endsWith(".exe")) {
ss = str.split("\\s")
for(int i=0i<ss.lengthi+=2){
System.out.println("****************************")
System.out.println("进程名:"+ss[i+1]+"\n进程ID:"+ss[i])
}
}
}
System.out.println("****************************")
ir.close()
ii.close()
br.close()
}
}
运行结果如下
包含关键字 QQ 的进程有:
****************************
进程名:QQ.exe
进程ID:3956
****************************
进程号也就是UNIX类OS中的,Process ID可是Process ID的概念只有在UNIX类的 *** 作系统中才有,Java作为一种多平台的程序语言,在JDK的接口中并不提供“进程ID”(Process ID)这种OS独有的概念。
如果要结束程序,可以使用System.exit()
如果非要得到自己的Process ID,唯一的方法就是在shell取历旦得Process ID,裂宴然后Java在通过某种方式肆烂银取得相应的Process ID。
代码:package com.test
import java.lang.management.ManagementFactory
import java.lang.management.RuntimeMXBean
public class Target {
public static void main(String[] args) throws InterruptedException {System.out.println(getProcessID())
while(true) {
Thread.sleep(10000)
}
}
public static final int getProcessID() {
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean()
System.out.println(runtimeMXBean.getName())
return Integer.valueOf(runtimeMXBean.getName().split("@")[0]) .intValue()
}
}
运行结果:2896@PC-20150603VRPL2896
当前进程ID为2896。
ManagementFactory是一个如慧埋在运行时管理和监碧缺控Java VM的工厂类,它能提供很多管渣蚂理VM的静态接口,比如RuntimeMXBean;
RuntimeMXBean是Java虚拟机的运行时管理接口.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)