1

我如何获得从java调用的某个cmd命令所花费的时间假设我正在发出icmp请求

String icmpRequest= "ping 192.168.3.3";
Runtime.getRuntime().exec(icmpRequest); 

调用 exec 后,我的函数将完成到下一行。有没有办法知道执行这个命令所消耗的时间或者停止这个线程直到这个过程完成。

能不能说流程的inputstream返回数据后流程就结束了

 BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));

            //reads the outputs
            String inputLine = in.readLine();
            if(inpuLine!=null)
             System.out.println("process finished");
4

2 回答 2

3

exec返回一个Process你可以使用的:

long start = System.nanoTime();
Process p = Runtime.getRuntime().exec(icmpRequest); 
p.waitFor();
long end = System.nanoTime();
System.out.println("it took: " + ((end - start) / 1000000) + "ms");

注意:如果你想在进程完成时继续做其他事情,你可以从一个单独的线程中调用它。

于 2013-06-19T20:11:48.470 回答
1

记录System.currentTimeMillis()(以毫秒为单位返回当前时间)作为执行进程之前的最后一件事。过程结束后立即减去。

String icmpRequest= "ping 192.168.3.3";

long start = System.currentTimeMillis();
Process p = Runtime.getRuntime().exec(icmpRequest); 
p.waitFor();

System.out.println("Took " + (start - System.currentTimeMillis()) + " ms");

Process.waitFor()导致当前线程等待,直到子进程终止。

于 2013-06-19T20:16:17.623 回答