Java - 无法实时查看流程输出

时间:2014-01-16 16:55:27

标签: java process stream

我有一个包含以下代码的Java程序。我执行一个外部C程序(在我的Windows 7机器上),它每秒打印一个字符P或R到标准错误流。但是,此输出的结果(pressed()released()的执行仅在进程终止时显示(当我需要它时)。所以如果我在一段时间后终止进程如果程序保持开放(现在和需要的话),它可以正常工作。可能出现什么问题?

    try {
        final Process p = Runtime.getRuntime().exec("remotek.exe");
        Runtime.getRuntime().addShutdownHook(new Thread() {
            @Override
            public void run() {
                p.destroy();
            }
        });
        Reader r = new InputStreamReader(p.getErrorStream());
        while (true) {
            int c = r.read();
            if (c == 'P') {
                pressed();
            }
            if (c == 'R') {
                released();
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

0 个答案:

没有答案