0

複数の Nmap コマンドを次々と実行しようとしています。

理想的には、各 Nmap コマンドは独自のコマンド プロンプト ウィンドウで作成されます。Nmap コマンドが実行され、終了します。次に、別のコマンド プロンプトが表示され、次の Nmap コマンド、execute などが表示されます。

残念ながら、現在のプログラムの実行方法では、複数のコマンド プロンプト ウィンドウが同時にポップアップし、同時に実行されます。コマンドを一度に 1 つだけ実行したい。私は、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 に答える