3

这是我的代码:

import java.io.*;

public class PingTest
{
    public static void main (String [] args) throws IOException, InterruptedException
    {
        Runtime.getRuntime().exec(new String[]
           {"cmd","/k","start","cmd","/c","ping localhost"});
    }
}

它像我想要的那样 ping 本地主机,但它不会保持打开状态。完成后立即关闭。我该怎么做才能解决这个问题?

4

3 回答 3

5

因为你基本上是在执行

cmd /k start cmd /c ping localhost

它完全按照它应该的方式运行,运行start哪个运行,哪个运行在完成后由于标志cmd而终止。ping/c

如果您希望具有 ping 结果的窗口保持打开状态,您需要执行

cmd /k start cmd /k ping localhost

或者

cmd /c start cmd /k ping localhost

(不管第一个标志cmd是什么,因为它没有打开一个新窗口。)

于 2013-05-30T21:21:00.533 回答
4

一种廉价的解决方法是在 main() 的末尾请求输入。

public static void main (String [] args) throws IOException, InterruptedException
{
    ...

    System.out.println("Press return to continue.");
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    in.readLine();
}
于 2013-05-30T21:01:56.843 回答
1

您可能想要使用内置命令pause。为此,您可以像这样扩展命令:

public static void main (String [] args) throws IOException, InterruptedException
{
    Runtime.getRuntime().exec(new String[]
       {"cmd", "/k", "start", "cmd", "/c", "\"ping localhost & pause\""});
}
于 2013-05-30T21:31:31.950 回答