我的项目目录有下面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的字符。可能的解决方案是什么
好吧,我找到了一个简单的答案
把
out.println(in.nextLine());
改成out.print(in.nextLine() + '\n')
行得通相关问题 更多 >
编程相关推荐