我正在運行以下代碼,並停止在waitfor()
函數。可能是什麼原因,我該如何解決?在Java中運行Unix命令
String line;
Process albumProcess;
try {
albumProcess = Runtime.getRuntime().exec(
"iconv -f UTF-16 -t UTF-8 /home/gozenem/"+ xmlFileName +
".xml | grep albumID");
albumProcess.waitFor();
BufferedReader in = new BufferedReader(
new InputStreamReader(albumProcess.getInputStream()));
ArrayList<String> lineList = new ArrayList<String>();
while ((line = in.readLine()) != null) {
lineList.add(line);
}
result[0] = lineList.size();
albumProcess.destroy();
} catch (Exception e) {}
我如何使用bash -e?我對此很新,如果你能幫助我,那將會很棒。謝謝。 – prgrmmr
@prgrmmr,'bash -c「foo」'啓動一個運行命令'「foo」'的新shell然後退出。 'bash -c「foo | bar」'包括管道。所以,只需引用你的命令,並把'bash -c'放在前面。從manpage:''-c string'如果存在'-c'選項,則從字符串中讀取命令。如果字符串後面有參數,則將它們分配給位置參數,從$ 0開始。 –
過程通常不會等待他們的輸出被消耗,是嗎?它不會只寫入標準輸出流並退出嗎?該過程必須由於其他原因而掛起。 – chesles