[英]stdout from python to stdin java
我在python中有從python到stdin的標准輸出。
我在用
Python代碼
p = subprocess.Popen(command, stdout = subprocess.PIPE, stdin = subprocess.PIPE)
p.stdin.write("haha")
print "i am done" #it will never hit here
Java代碼
Scanner in = new Scanner(System.in)
data = in.next()// the code blocks here
基本上會發生什么事,子進程運行jar文件--->它會阻塞,因為stdin仍在阻塞,因為它沒有顯示任何內容
蟒蛇:
p.stdin.write("haha")
Java的:
Scanner in = new Scanner(System.in) data = in.next()
從Java掃描器文檔 :
默認情況下,掃描儀使用空格分隔令牌。 (空格字符包括空格,制表符和行終止符。
您的python代碼沒有寫任何掃描程序識別為令牌結尾的內容,因此掃描程序坐在那里等待讀取更多數據。 換句話說, next()
讀取輸入,直到遇到空白字符,然后它返回讀入的數據減去終止的空白。
此python代碼:
import subprocess
p = subprocess.Popen(
[
'java',
'-cp',
'/Users/7stud/java_programs/myjar.jar',
'MyProg'
],
stdout = subprocess.PIPE,
stdin = subprocess.PIPE,
)
p.stdin.write("haha\n")
print "i am done"
print p.stdout.readline().rstrip()
...使用以下Java代碼:
public class MyProg {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String data = in.next();
System.out.println("Java program received: " + data);
}
}
...產生以下輸出:
i am done
Java program received: haha
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.