我想在我的Java应用程序中运行控制台命令,该命令监听传入的消息并在接收到消息时将其记录到控制台。当我在终端中执行它时,console命令运行良好。所以我想运行该命令,然后在输出一行时执行某些操作,然后继续运行并监听其他新消息。我想这通过下面的代码:监听控制台命令输出
try {
ProcessBuilder builder = new ProcessBuilder(PYTHON_PATH, YOWSUP_CLI_PATH, "demos", "-r", "-c", YOWSUP_CONFIG);
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
log.info("Started listening...");
// It does nothing from here on
while ((line = reader.readLine()) != null) {
log.info(line);
}
log.info("Stopped listening.");
} catch (Exception e) {
e.printStackTrace();
}
但是当我运行这段代码,它记录了“开始听...”字符串,因此我将消息发送到尝试,但它不会记录并且只是不做任何事情而继续奔跑。
如果我没有正确解释某件事,就这么说!
看看[这个](http://stackoverflow.com/questions/19102989/java-is-there-a-way-to-run-a-system-command-and-print-the-output -during-executi/19103198#19103198),也可能尝试使用'ProcessBuilder#inheritIO' - 我假设你正在尝试运行python命令 – MadProgrammer
@MadProgrammer谢谢!我的python命令中的'-u'参数确实有效。 –