我有一个如下所示的例子。命令
iscsiadm -m discovery -t st -p iscsiInfo.ipAddress
将在此处执行,如果我想在执行此命令后执行额外命令,如
,该怎么办? ls /var/lib/iscsi/nodes
如何使用java.lang.process?
添加,我只需要执行第一个命令,但我需要获得第二个命令结果并在GUI中显示它。
public static void main(String args[]) {
try {
String line;
Process p = Runtime.getRuntime().exec("iscsiadm -m discovery -t st -p iscsiInfo.ipAddress");
BufferedReader bri = new BufferedReader
(new InputStreamReader(p.getInputStream()));
BufferedReader bre = new BufferedReader
(new InputStreamReader(p.getErrorStream()));
while ((line = bri.readLine()) != null) {
System.out.println(line);
}
bri.close();
while ((line = bre.readLine()) != null) {
System.out.println(line);
}
bre.close();
p.waitFor();
System.out.println("Done.");
}
catch (Exception err) {
err.printStackTrace();
}
}
答案 0 :(得分:3)
您可以运行运行多个命令的shell。
e.g。
Runtime.getRuntime().exec("sh", "-c",
"iscsiadm -m discovery -t st -p iscsiInfo.ipAddress &&"
+" ls /var/lib/iscsi/nodes");
如果您使用ProcessBuilder,您可以将错误重定向到标准输出并有一个流来读取。