Я собираю многоязычную систему, но сталкиваюсь с проблемами с потерянными процессами.
Мой код состоит из Python-программы, вызывающей Java-программу, с канальной связью между двумя программами;Java-программа является постоянной, а не разовой.В целом все работает, но мне нужно закрыть программу на Java, если программа Python преждевременно завершает работу.
I думаю, лучший способ сделать это - закрыть программу Java, если онане могу обнаружить канал stdin между программами, но я не могу понять, как это сделать.
Соответствующий код Python:
javaInterface = subprocess.Popen(["pathtojavaprogram"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
Соответствующий код Java;Я хочу, чтобы программа закрывалась, если она не может читать из стандартного ввода, но я думаю, что в игру вступают некоторые проблемы с блокировкой с функцией readLine ():
String stdinStr = "";
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
while(true){
try{
stdinStr = stdin.readLine();
}
catch(java.lang.Exception e){
System.exit(0);
}
//Do stuff with the stdinStr data
}