我有一个包含以下代码的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();
}