このコードを実行すると、呼び出しグラフが非常に大きいため、何も残っていないにもかかわらず、プログラムは出力する最後の行までopt
出力され、でブロックされます。readLine
誰が問題が何であるか知っていますか?opt -print-callgraph file
コール グラフをエラー ストリームに送信します。代わりにファイルから読み取ることができるように実行しようとopt -print-callgraph file 2> callgraph
しましたが、位置引数が多すぎると不平を言います。
奇妙なことに、コードはサイズの小さいコール グラフでも問題なく実行されます。
私も使用ProcessBuilder
してみましたが、同じ問題が発生します。
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("opt -print-callgraph " + file);
BufferedReader in = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String s = null;
try {
// Gets stuck at readLine after printing out the last line.
while ((s = in.readLine()) != null) {
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
in.close();
}