在我的程序中,我試圖通過Java代碼執行make
。進程getInputStream()永不結束
這裏我上市的一部分:
this.makefileGenerator.generate();
Process proc = this.makefileGenerator.runCompiler();
//this.stream.println(IOUtils.toString(proc.getInputStream()));
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line;
while ((line = reader.readLine()) != null)
System.out.println("\n" + line);
try {
int result;
if ((result=proc.waitFor()) == 0)
this.stream.println("Done!");
else {
的執行似乎proc.getInputStream()
通話過程中被阻塞。事實上,我的程序不會崩潰,但永遠不會終止。
在控制檯輸出I有:
make: Entering directory '/cygdrive/c/Users/cr01046/Documents/workspace/ocelot/jni'
gcc -shared -m32 -D__int64=int64_t -LC:/gtk/lib -lintl -mms-bitfields -IC:/gtk/include/glib-2.0 -IC:/gtk/lib/glib-2.0/include -IC:/'Program Files'/Java/jdk1.8.0_73/include -IC:/'Program Files'/Java/jdk1.8.0_73/include/win32 -o ../Test.dll lists.c ocelot.c EN_CBridge.c main.c -lglib-2.0
我也試圖拋出make
通過及時和正確編譯終止(但是,有幾個警告)。我不明白爲什麼在這種情況下make
有效,而通過Java它不會終止。
你怎麼知道它在getInputStream()中被阻塞?我會將這組嵌套的調用分成單獨的語句以確認它被阻塞的位置。 –
你的'System.out.println'指令似乎可行,所以問題不在讀者創建部分。 – Berger