[問題] subprocess與java通訊問題

看板Python作者 (LT)時間6年前 (2018/08/21 11:11), 編輯推噓0(008)
留言8則, 3人參與, 6年前最新討論串1/1
小弟有個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

08/21 14:18, 6年前 , 1F
你 python 那邊的 write 加個換行看看 因為你 java
08/21 14:18, 1F

08/21 14:18, 6年前 , 2F
這邊用的是 readLine
08/21 14:18, 2F

08/21 14:26, 6年前 , 3F
然後 python 的 write 後加個 p.stdin.flush()
08/21 14:26, 3F

08/21 17:00, 6年前 , 4F
是執行後一直處於等待,還是有error code?
08/21 17:00, 4F

08/21 17:00, 6年前 , 5F
請問怎麼知道是卡在p.stdout.read()這行呢?
08/21 17:00, 5F

08/21 17:50, 6年前 , 6F
感謝一樓大大,加上換行字元跟flush就可以了
08/21 17:50, 6F

08/21 17:50, 6年前 , 7F
是用print知道卡在這邊的
08/21 17:50, 7F

08/21 17:53, 6年前 , 8F
其實我後來改用socket處理通訊問題,現在可以改回來了
08/21 17:53, 8F
文章代碼(AID): #1RUuBwTV (Python)
文章代碼(AID): #1RUuBwTV (Python)