cmd中的Java PID没有变化

时间:2014-04-11 11:28:18

标签: java cmd

我有一个每30秒运行一次的swing计时器,它调用了一种方法,我可以从列表中搜索一些特定应用程序的PID。

这是被调用的方法中的代码。

try {
    Runtime r = Runtime.getRuntime();
    Process p = r.exec("tasklist");

    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String inputLine = "";

    while ((inputLine = in.readLine()) != null) {
        System.out.println(inputLine);
        for (int i = 0; i < runningAppList.size(); i++) {
            if (inputLine.contains(runningAppList.get(i).getExecutableName())) {
                appPIDNumber = inputLine.substring(28, 35).trim();
                break;
            } else {
                appPIDNumber = "";
            }
        }
    }

    in.close();
} catch (IOException e) {
    LoggingUtils.LogExceptions(LoggingConstants.ERROR, e.toString());
}

因此,如果我的应用程序正在运行并且我启动应用程序,我会得到PID,但是当我关闭应用程序时,它仍会显示PID并且不会将其清除回“”;我知道我错过了一些小事。

感谢。

1 个答案:

答案 0 :(得分:1)

我认为这是因为runningAppList。如果应用程序已关闭,则该列表可能为空,因此不会执行“while”循环,并且变量appPIDNumber将不会设置为空。

第二个选项是,应用程序关闭后r.exec("tasklist")不包含任何行。

无论如何,您似乎必须在“while”循环之前将appPIDNumber设置为空。