我有以下短Python程序「test.py」的Runtime.exec()在Java掛起因爲它是從System.in
n = int(raw_input())
print n
我是從下面的Java執行上述程序節目 「ProcessRunner.java」
import java.util.*;
import java.io.*;
public class ProcessRunner {
public static void main(String[] args) {
try {
Scanner s = new Scanner(Runtime.getRuntime().exec("python test.py").getInputStream()).useDelimiter("\\A");
System.out.println(s.next());
}
catch(Exception e) {
System.out.println(e.getMessage());
}
}
}
在運行命令,
java ProcessRunner
我不能夠通過在親值 'N'每種格式的Python程序和Java運行掛起。什麼是正確的方式來處理這種情況,並從java程序中動態地將值'n'傳遞給python程序?
看看這裏http://stackoverflow.com/questions/18903549/writing-to-inputstream-of-a-java-process關於如何與Python進程進行通信的信息。 –
另請參閱[當Runtime.exec()不會](http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html)很多很好的有關正確創建和處理過程的提示。然後忽略它是指'exec'並使用'ProcessBuilder'來創建進程。還要將'String arg'分解爲'String [] args'來解釋包含空格字符的路徑。 –