java执行linux命令返回结果问题

z6165039 z6165039 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
public static Map<String,String> execShellCommandMap(String command) {

Map<String,String> retmap = new HashMap<String,String>();

if (command == null || command.equals("")){
return null;
}
Process p = null;
Runtime rt = Runtime.getRuntime();

final StringBuffer buf1 = new StringBuffer("");
final StringBuffer buf2 = new StringBuffer("");
Integer retValue = null;
try {
p = rt.exec(command);
// 获取进程的标准输入流
final InputStream is1 = p.getInputStream();
// 获取进城的错误流
final InputStream is2 = p.getErrorStream();
// 启动两个线程,一个线程负责读标准输出流,另一个负责读标准错误流
new Thread() {
public void run() {
BufferedReader br1 = new BufferedReader(new InputStreamReader(is1));
try {
String line1 = null;
while ((line1 = br1.readLine()) != null) {
buf1.append(line1);
buf1.append("\r\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {

}
}
}.start();
new Thread() {
public void run() {
BufferedReader br2 = new BufferedReader(new InputStreamReader(is2));
try {
String line2 = null;
while ((line2 = br2.readLine()) != null) {
buf2.append(line2);
buf2.append("\r\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {

}
}
}.start();
p.waitFor();
retValue = p.exitValue();
// p.destroy();
} catch (Exception e) {
e.printStackTrace();
// try {
// p.getErrorStream().close();
// p.getInputStream().close();
// p.getOutputStream().close();
// } catch (Exception ee) {
// }
}
retmap.put("normaloutput", buf1.toString());
retmap.put("erroroutput", buf2.toString());
retmap.put("retvalue", retValue != null ? retValue.toString():"");
retmap.put("message", buf1.toString()+buf2.toString());
return retmap;

}


问题1:
Map<String,String> map = ShellUtil.execShellCommandMap(HotCust.CHECKHA_EXIST_SCRIPT);
这样调用后的输出结果是不是相当于linux命令行执行命令后 在执行一次 echo $? 的返回结果!

问题2:
如果问题1的答案是 :是
那么为什么我java调用永远返回1:
[root@server11 ~]# chkconfig --list | grep heartbeat
heartbeat 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@server11 ~]# echo $?
0
[root@server11 ~]#

问题3:
最后跪求如何能正确或者linux命令的返回结果!!



在线等。。。。


...全文
评论 4
收藏 已收藏
分享
返回顶部
z6165039
Java 51,407 成员 86,127 内容