我的项目目录下面有3个文件。
rndbet / rndbet.py
while True:
s = input()
if s == "exit":
exit()
else:
print("I'm rndbet: " + s)
rndbet /开始
python3 rndbet.py
mjhd.java
import java.io.PrintStream;
import java.util.Scanner;
public class mjhd {
public static void main(String[] args) throws Exception {
Process process = new ProcessBuilder("bash", "-c", "cd rndbet&&./start").start();
new Thread(new Runnable() {
@Override
public void run() {
Scanner in = new Scanner(process.getInputStream());
while (in.hasNextLine()) {
System.out.println("<- rndbet: " + in.nextLine());
}
}
}).start();
Scanner in = new Scanner(System.in);
PrintStream out = new PrintStream(process.getOutputStream(), true);
while (true) {
out.println(in.nextLine());
} //this part is actually broken; it shouldn't be an infinite loop
//just for testing
}
}
当我直接从命令行输入bash -c "cd rndbet&&./start"
时,会发生以下情况。
$ bash -c "cd rndbet&&./start"
hi
I'm rndbet: hi
exit
但是运行java程序的行为有所不同。
$ java mjhd
hi
<- rndbet: I'm rndbet: hi
exit
<- rndbet: I'm rndbet: exit
exit
<- rndbet: I'm rndbet: exit
所以现在Python脚本没有正确获取exit
命令。请帮我解决这个问题。
我刚刚发现一个问题,当Python脚本通过Java运行时,ASCII值13的额外字符总是附加在发送文本的末尾。什么是可能的解决办法?
答案 0 :(得分:0)
好的,我找到了一个简单的答案。
将out.println(in.nextLine());
更改为out.print(in.nextLine() + '\n')
有效。