关于进程的异步提问

Cornssss 2017-02-24 02:25:10
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class PowshcmdExe {

public static int exeShell(String path) {
int exitValue = 1;
String message = "";
String cmdLine = "cmd /c powershell " + path;
try {
Process process = Runtime.getRuntime().exec(cmdLine);
process.getOutputStream().close();
System.out.println("Hello!");
int waitFor = process.waitFor();
InputStream is = process.getErrorStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
message += line;
}

message += " Process waitFor=" + waitFor;
exitValue = process.exitValue();
message += " Process exitValue=" + exitValue;
process.destroy();
}
catch (Exception e) {
message = e.getMessage();
e.printStackTrace();
}
return exitValue;
}
}

以上代码中红色部分,是执行一个cmd命令。
现在的需求是:
执行这个cmd命令可能需要很长时间,我可以让这个cmd命令一直执行,但依旧往下跑自己的程序吗?
即cmd命令在执行中,依旧能打印Hello
...全文
176 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiajing1990_ 2017-02-27
  • 打赏
  • 举报
回复
引用 2 楼 sinat_30824257 的回复:
[quote=引用 1 楼 jiajing1990_ 的回复:] 你这个要是还能输出下面的Hello 那你前面就会终止诶,因为你有这个process.getOutputStream().close(); 如果你一定要这么做的话 可以把执行command 命令单独写,然后起一个线程来调用
是不是不用线程的话是没办法实现我的需求的呀?[/quote]我是这样认为的
Cornssss 2017-02-27
  • 打赏
  • 举报
回复
引用 1 楼 jiajing1990_ 的回复:
你这个要是还能输出下面的Hello 那你前面就会终止诶,因为你有这个process.getOutputStream().close(); 如果你一定要这么做的话 可以把执行command 命令单独写,然后起一个线程来调用
是不是不用线程的话是没办法实现我的需求的呀?
jiajing1990_ 2017-02-24
  • 打赏
  • 举报
回复
你这个要是还能输出下面的Hello 那你前面就会终止诶,因为你有这个process.getOutputStream().close(); 如果你一定要这么做的话 可以把执行command 命令单独写,然后起一个线程来调用

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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