コマンドを C プログラムに送信し、その出力を読み取る Java のプログラムを作成していますが、実際に出力を読み取ろうとするとハングすることがわかります。コードは次のとおりです。
import java.io.*;
public class EsecutoreC {
private String prg;
OutputStream stdin=null;
InputStream stderr=null;
InputStream stdout=null;
BufferedReader br;
Process pr;
public EsecutoreC(String p){
prg=p;
try {
pr=Runtime.getRuntime().exec(prg);
stdin=pr.getOutputStream();
stderr=pr.getErrorStream();
stdout=pr.getInputStream();
br=new BufferedReader(new InputStreamReader(stdout));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void sendInput(String line){
line=line+"\n";
try {
stdin.write(line.getBytes());
stdin.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public BufferedReader getOutput(){
return br;
}
}
プログラムの出力を読み取る必要がある場合は、getOutput を使用して BufferedReader を取得してから、readLine() を呼び出します。readLine の呼び出しの直後に println を配置したため、プログラムがハングしたことがわかりましたが、何も出力されません。また、C プログラムの出力の各行の後に \n を追加します。また、Runtime.getRuntime().exec() を通じて呼び出されるプログラムのウィンドウを表示する方法はありますか? 文字列を送信するとき、またはその出力から読み取るときに、他に問題があるかどうかを確認できるようにします。