我需要知道当前工作空间的eclipse的进程ID。假设在3个不同的工作空间中打开了3个eclipse,如workspace1,workspace2和workspace3。我想在worksapce1中运行一个java程序来获取workspace1的进程id。有没有办法得到这个?我可以通过以下命令找出所有正在运行的eclipse的进程ID:
String strCommand = "wmic process where name='eclipse.exe' get ProcessID";
ArrayList<String> pidList = runCommand(strCommand);
public ArrayList<String> runCommand(String arguments)
{
String[] cmd = new String[3];
ArrayList<String> output = new ArrayList<>();
cmd[0] = "cmd";
cmd[1] = "/c";
cmd[2] = arguments;
ProcessBuilder builder = new ProcessBuilder(cmd);
Process process;
builder.redirectErrorStream(true);
try
{
process = builder.start();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while (true)
{
line = bufferedReader.readLine();
if (line == null) { break; }
output.add(line);
//System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return output;
}
我也尝试使用jnr-4.5.0.jar和jna-platform-4.5.0.jar来获取如下的进程ID:
int pid = Kernel32.INSTANCE.GetCurrentProcessId();
每次显示一个随机pid,它实际上与我从windows任务管理器中找到的eclipse的进程ID不匹配。
有没有办法获取当前工作区的进程ID?
N.B:我正在使用java 8和Windows平台。
谢谢。