p = Runtime.getRuntime().exec("cmd /c \"start ping 127.0.0.1 -t\""); //没有必要用start,exec()会另起一个process来执行命令 processExit=p.waitFor(); while (processExit!=0) { //没有必要用循环,waitfor会等待process结束。 ...... 我建议你先试试如下程序,你看不到Ping程序执行的窗口,但可以捕捉返回值。 Process p; int processExit=0; p = Runtime.getRuntime().exec("ping 127.0.0.1"); processExit=p.waitFor(); if (processExit==0) System.out.println("Success!");然后再试试如下程序,ping的返回值捕捉不到了: Process p; int processExit=0; p = Runtime.getRuntime().exec("cmd /c \" start /wait ping 127.0.0.1 -t\""); p.waitFor(); System.out.println("Success!");
Process p;
int processExit=0; p = Runtime.getRuntime().exec("cmd /c \"start ping 127.0.0.1 -t\"");
processExit=p.waitFor();
while (processExit!=0) {
System.out.println("please waiting...");
processExit=p.waitFor();
}
System.out.println("Success!");
由于执行的是ping 127.0.0.1 -t,按理说,程序运行后应该不断打出please waiting...,而不应该出现Success!,更不应该退出,除非是我把弹出的窗口关闭。
可事实却不是这样。
不理解。
start ping 127.0.0.1 -t
这条命令先执行 start 打开一个新的 Dos 窗口
到这一步 Java 就认为命令已经成功返回了
至于 ping 127.0.0.1 -t 那是 Dos 窗口的事
与 Runtime 无关了你可以把 Start 去掉 在感觉一下
利用无限循环,每循环一次就判断是否执行完毕,如果还没有,就等待若干秒,继续循环,
如果执行完了,就退出循环,继续干你下面想做的事情。
看看telenths(_非法操作_)的回复。征求好方法。
//没有必要用start,exec()会另起一个process来执行命令
processExit=p.waitFor(); while (processExit!=0) {
//没有必要用循环,waitfor会等待process结束。
......
我建议你先试试如下程序,你看不到Ping程序执行的窗口,但可以捕捉返回值。
Process p;
int processExit=0; p = Runtime.getRuntime().exec("ping 127.0.0.1");
processExit=p.waitFor(); if (processExit==0) System.out.println("Success!");然后再试试如下程序,ping的返回值捕捉不到了:
Process p;
int processExit=0; p = Runtime.getRuntime().exec("cmd /c \" start /wait ping 127.0.0.1 -t\"");
p.waitFor(); System.out.println("Success!");