码迷,mamicode.com
首页 > 其他好文 > 详细

Runtime.getRuntime().exec()调用外部程序

时间:2015-06-04 00:47:45      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

场景:linux下,在web工程里调用一个C++程序,实现代码如下:

StringBuffer cmd = new StringBuffer();
cmd.append("nohup ");

……
System.out.println("执行程序命令:"+cmd.toString());
String[] cmds = { "/bin/sh", "-c", cmd.toString()};
Runtime.getRuntime().exec(cmds, null, new File(McdConstans.FILE_PATH));

简单说明:

exec(String[] cmdarray, String[] envp, File dir)

参数1 cmdarray:执行调用的命令及参数;

参数2 envp:环境变量,如path=c:\java\bin,若未使用则为null;

参数3 dir :执行命令的工作目录;

注:

API里还有类似exec(String command)、exec(String[] cmdarray) 的方法,但其最终调用的是:exec(String[] cmdarray, String[] envp, File dir),只不过envp和dir都被设定为Null了。

个人使用理解:

exec(String command)用于直接调用可执行文件,类似exec("c:\system32\calc.exe");

exec(String[] cmdarray)则用于sh命令、重定向等操作类语句的调用;

File dir参数在调用的程序需访问其对应目录结构时,非常重要,制定后执行的指令时才能在目录上需要寻找其他文件(而不是在java执行环境下寻找,报cannot open file错误)

最后,有个小细节调用程序时需要注意权限,权限不足chmod。

Runtime.getRuntime().exec()调用外部程序

标签:

原文地址:http://www.cnblogs.com/liuyunxi/p/4550531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!