OSX上的ProcessBuilder

时间:2012-03-22 16:54:02

标签: java macos runtime.exec processbuilder

我能够在Windows上成功执行此操作:

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

但这在OSX上失败了:

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

错误:

“在2012-03-22 09:51 PDT

启动Nmap 5.51(http://nmap.org

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

戒烟!“

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

1 个答案:

答案 0 :(得分:3)

我猜你试图在ipRange中将两个单独的参数作为一个字符串传递。 ProcessBuilder可能用引号包装ipRange String并混淆命令语法。您需要单独添加所有参数

不喜欢这样:

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

但是像这样:

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