java多次调用CMD时,加入“cmd.exe”会卡住的原因是?

wsy2846513 2017-11-05 01:57:18
我在多次调用CMD的时候,在参数内加上“cmd.exe”,程序就会卡住,但是如果没有“cmd.exe”,就能够正常完成多次调用,这是为什么呢?

通过参数传入要执行的命令,代码如下:
    public ArrayList<String> executeCmdArr(ArrayList<String> cmdCommandArr) {
ArrayList<String> cmdLog = new ArrayList<String>();
String lineData;
try {
for (String parameter : cmdCommandArr) {
System.out.println("CallCMD -- executeCmdArr:\t" + parameter);
process = Runtime.getRuntime().exec(parameter);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));

while ((lineData = reader.readLine()) != null){
System.out.println("cmdarr: \t" + lineData);
cmdLog.add(lineData);
}
}
return cmdLog;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}


当参数中没有“cmd.exe时”,能够正常完成全部调用:
        cmdCommandArr = new ArrayList<String>() {{
add("ipconfig");
add("java -version");
}};


当参数中游“cmd.exe”时,第一个命令执行之后,无法退出循环,
       cmdCommandArr = new ArrayList<String>() {{
add("cmd.exe /k ipconfig");
add("cmd.exe /k java -version");
}};


在网上找的例子中,有的调用时用了“cmd.exe”,有的没用。。。所以在调用时有没有“cmd.exe”的区别是什么呢?为什么会卡住不动呢?求解答
...全文
286 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsy2846513 2017-12-24
  • 打赏
  • 举报
回复
难道是我分给的少的原因么。。

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧