2012-03-22 99 views
0

我能够成功地执行在Windows操作系统上:的ProcessBuilder在OSX

builder = new ProcessBuilder("cmd.exe", "/c", "nmap " + ipRange, "&cd");

但这在OSX失败:

builder = new ProcessBuilder("/usr/local/bin/nmap", ipRange);

与错误:

“启动Nmap 5.51(http://nmap.org)于2012-03-22 09:51 PDT

主机表达式无效:127.0.0.1 -p T:80 - 冒号只允许在IPv6地址中,然后您需要-6开关

QUITTING!“

什么是创建ProcessBuilder for OSX的正确方法? 谢谢

回答

3

我猜你试图通过两个单独的参数作为一个字符串在ipRange。 ProcessBuilder可能会用引号将ipRange字符串包装起来,并弄乱命令语法。您需要添加的所有参数分别

不喜欢这样的:

new ProcessBuilder("/usr/local/bin/nmap", "-foo foo -bar bar"); 

但这样的:

new ProcessBuilder("/usr/local/bin/nmap", "-foo", "foo", "-bar", "bar"); 
+0

非常感谢你,是解决它。任何想法,为什么它不是在Windows上的问题? – user1286505 2012-03-22 21:23:01

+0

不同的操作系统有不同的命令行语法 – 2012-03-23 07:25:46

+0

基本上,如果你以前的版本在Windows上工作,你的幸运。但是,如果分别指定每个参数,ProcessBuilder仅用于工作。不幸的是,这些文档并不具体。 – 2012-03-23 07:28:52