[问题] subprocess与java通讯问题

楼主: thefattiger (LT)   2018-08-21 11:11:52
小弟有个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就一直试不成功
请问有前辈可以指点小弟该怎么做吗?
作者: dododavid006 (朔雪)   2018-08-21 14:18:00
你 python 那边的 write 加个换行看看 因为你 java这边用的是 readLine然后 python 的 write 后加个 p.stdin.flush()
作者: renshin (阿信)   2018-08-21 17:00:00
是执行后一直处于等待,还是有error code?请问怎么知道是卡在p.stdout.read()这行呢?
楼主: thefattiger (LT)   2018-08-21 17:50:00
感谢一楼大大,加上换行字符跟flush就可以了是用print知道卡在这边的其实我后来改用socket处理通讯问题,现在可以改回来了

Links booklink

Contact Us: admin [ a t ] ucptt.com