gpt4 book ai didi

java - 从另一个进程的输出流中读取

转载 作者:行者123 更新时间:2023-11-30 07:23:32 25 4
gpt4 key购买 nike

我想在我的 Java 程序中读取 c 应用程序的输出流。 iremoted(可在此处获得:Link)是一个 C 应用程序,如果按下我的 Apple Remote 上的按钮,它会输出单独的行,例如“0x19 pressed”。如果我启动 iremoted 程序,一切都很好,每次我按下按钮时,这些单独的行都会显示在我的屏幕上。现在我想在我的 Java 应用程序中读取 c 应用程序的输出流,以处理 Java 项目中 Apple Remote 的输入。不幸的是,我不知道为什么没有输入被重新识别

我用一个简单的 HelloWorld.c 程序进行了尝试,我的程序在这种情况下按预期响应(打印出 HelloWorld)。

为什么它不能与 iremoted 程序一起使用?

public class RemoteListener {


public void listen(String command) throws IOException {

String line;
Process process = null;
try {
process = Runtime.getRuntime().exec(command);
} catch (Exception e) {
System.err.println("Could not execute program. Shut down now.");
System.exit(-1);
}

Reader inStreamReader = new InputStreamReader(process.getInputStream());
BufferedReader in = new BufferedReader(inStreamReader);

System.out.println("Stream started");
while((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
System.out.println("Stream Closed");
}




public static void main(String args[]) {
RemoteListener r = new RemoteListener();
try {
r.listen("./iremoted"); /* not working... why?*/
// r.listen("./HelloWorld"); /* working fine */
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

最佳答案

stdout 已缓冲,如果您不向屏幕写入,它不会自动刷新。添加:

fflush(stdout);

之后:

printf("%#lx %s\n", (UInt32)event.elementCookie,
(event.value == 0) ? "depressed" : "pressed");

关于java - 从另一个进程的输出流中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11957337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com