我正在尝试在java程序中的进程和java程序调用的外部python脚本之间进行通信。问题出现了,我的java程序只有在终止后才收到python程序的输出。这意味着我不能进行双面对话"进程之间,这是我的目标。这是我的python代码:
for i in range(3):
print("hello"); #send hello to java
line = sys.stdin.readline(); #read read response from java
和我的java代码:
String line;
Process external = Runtime.getRuntime().exec(execStr);
BufferedReader in = new BufferedReader(new InputStreamReader(external.getInputStream()));
PrintStream out = new PrintStream(external.getOutputStream(),true);
while ((line = in.readLine)) != null){//while python has not yet terminated
if (line.length > 0){ // if not a bogus line
handleLine();
sendResponse();
}
}
然后Java挂起在下一个readLine上,因为它永远不会从python接收下一个输出。
感谢您的帮助:)
答案 0 :(得分:0)
对此可能有一个更好的答案,但我从来没有"脸红" python的输出(我认为这将自动完成),但通过在打印行后添加一个简单的sys.stdout.flush()
,它解决了我的问题。