猿问

ProcessBuilder与Runtime.exec()的区别

ProcessBuilder与Runtime.exec()的区别

我试图从java代码中执行一个外部命令,但我注意到Runtime.getRuntime().exec(...)new Process(...).start().

使用时Runtime:

Process p = Runtime.getRuntime().exec(installation_path + 
                                       uninstall_path + 
                                       uninstall_command + 
                                       uninstall_arguments);p.waitFor();

exitValue为0,命令终止为ok。

然而,与ProcessBuilder:

Process p = (new ProcessBuilder(installation_path +    
                                 uninstall_path +
                                 uninstall_command,
                                 uninstall_arguments)).start();p.waitFor();

退出值为1001,命令在中间终止,尽管waitFor退货。

我该怎么做才能解决这个问题?ProcessBuilder?


慕虎7371278
浏览 2392回答 3
3回答

慕田峪9158850

看看Runtime.getRuntime().exec()将字符串命令传递给ProcessBuilder..它使用令牌程序并将命令分解为单个令牌,然后调用exec(String[] cmdarray, ......)构造ProcessBuilder.如果您构造ProcessBuilder使用字符串数组而不是单个字符串,您将得到相同的结果。这个ProcessBuilder构造函数采用String...因此,将整个命令作为单个字符串传递与在终端中以引号调用该命令具有相同的效果:shell$ "command with args"
随时随地看视频慕课网APP

相关分类

Java
我要回答