如何获取eclipse当前工作空间的进程ID?

时间:2017-09-19 10:13:14

标签: java eclipse eclipse-plugin eclipse-rcp pid

我需要知道当前工作空间的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平台。

谢谢。

0 个答案:

没有答案