0
我試圖一個接一個地運行多個Nmap命令。在Java中的可見命令提示符窗口中對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();
}
我發現如果我從ProcessBuilder參數中刪除「start」,那麼根本沒有窗口顯示。 – Nomen 2010-09-03 16:34:36
那麼你可以用getInputStream()()和/或getErrorStream獲得進程的輸出,然後用它做任何你想做的事:把它發送到日誌文件,用swing組件顯示它,不管... – 2010-09-03 19:42:26
有什麼辦法可以讓ProcessBuilder創建的「初始」進程作爲命令提示符窗口顯示? 雖然使用getInputStream很容易顯示輸出,但如何與命令提示窗口進行交互? 當Nmap運行時,如果進程需要一段時間,我可以在命令提示符下按下一個鍵,導致Nmap給出估計的時間直到命令完成。 – Nomen 2010-09-08 16:58:35