作者thefattiger (LT)
看板Python
標題[問題] subprocess與java通訊問題
時間Tue Aug 21 11:11:52 2018
小弟有個Python程式如下
import subprocess
if __name__ == '__main__':
p = subprocess.Popen(["java","withPy"], stdin=subprocess.PIPE,stdout=subprocess.PIPE)
p.stdin.write(b"abc")
line=p.stdout.read()
print(line)
對應的Java程式:
import java.io.*;
public class withPy {
public static void main(String[] args) {
try {
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
String s = bufferRead.readLine();
System.out.println(s);
}
catch(IOException e){
System.out.println(e);
}
}
}
其實就只是將abc傳給Java再傳回來
但執行後老是卡在p.stdout.read()那一行
已測試過若只有單方面的通訊(Python=>Java, Java=>Python)都是可行
但若要Python=>Java=>Python就一直試不成功
請問有前輩可以指點小弟該怎麼做嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.45.150
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1534821114.A.75F.html
→ dododavid006: 你 python 那邊的 write 加個換行看看 因為你 java 08/21 14:18
→ dododavid006: 這邊用的是 readLine 08/21 14:18
→ dododavid006: 然後 python 的 write 後加個 p.stdin.flush() 08/21 14:26
→ renshin: 是執行後一直處於等待,還是有error code? 08/21 17:00
→ renshin: 請問怎麼知道是卡在p.stdout.read()這行呢? 08/21 17:00
→ thefattiger: 感謝一樓大大,加上換行字元跟flush就可以了 08/21 17:50
→ thefattiger: 是用print知道卡在這邊的 08/21 17:50
→ thefattiger: 其實我後來改用socket處理通訊問題,現在可以改回來了 08/21 17:53