多言語システムをまとめていますが、孤立したプロセスで問題が発生しています。
私のコードは、Javaプログラムを呼び出すPythonプログラムで構成されており、2つのプログラム間でパイプ通信が行われます。Javaプログラムは、1回限りの実行ではなく、永続的です。すべてが正常に機能していますが、Pythonプログラムが途中で終了した場合は、Javaプログラムを閉じる必要があります。
これを行う最善の方法は、プログラム間のstdinパイプを検出できない場合に、Javaプログラムを閉じることだと思いますが、これを行う方法がわかりません。
関連するPythonコード:
javaInterface = subprocess.Popen(["pathtojavaprogram"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
関連するJavaコード。stdinから読み取れない場合はプログラムを終了したいのですが、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
}