我正在运行以下代码,并停止在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