0

我正在尝试一个接一个地运行多个 Nmap 命令。

理想情况下,每个 Nmap 命令都将在其自己的命令提示符窗口中创建。Nmap 命令将执行并完成。然后会出现另一个命令提示符,下一个 Nmap 命令,执行,等等。

不幸的是,程序当前运行的方式是同时弹出多个命令提示符窗口并同时执行。我希望命令一次只执行一个。我原以为 waitFor() 方法可以解决问题,但事实并非如此。我错过了什么吗?

我已经从我的实际程序中大大简化了这一点,以解决核心问题。任何帮助,将不胜感激。

try {
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "start", "nmap", targets, "-p 1-    65535", "-oN +output");
            Process p = pb.start();
            p.waitFor();
            System.out.println("p done");

            Process z = pb.start();
            z.waitFor();
            System.out.println("z done");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
4

1 回答 1

0

这是因为你正在做一个“开始”。该进程将启动另一个进程来处理 nmap 命令,并在不等待该子进程终止的情况下终止。

删除“开始”应该使窗口一个接一个地显示。

于 2010-09-02T21:55:20.617 回答