场景: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。

转载于:https://www.cnblogs.com/liuyunxi/p/4550531.html

Runtime.getRuntime().exec()调用外部程序相关推荐

  1. 如何在JAVA代码中执行 exec master..xp_cmdshell @cmd // 当作SQL语句调用就成了 或者调用 Runtime.getRuntime().exec

    例如: //package FS; import java.io.IOException; import java.sql.*; public class BCP {  static Connecti ...

  2. java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本

    举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...

  3. 调用Runtime.getRuntime().exec()执行Linux脚本导致程序挂住的问题分析

    问题: 在Java程序中,通过Runtime.getRuntime().exec()执行一个Linux脚本导致程序被挂住,而在终端上直接执行这个脚本则没有任何问题. 原因: 先来看Java代码: pu ...

  4. java Runtime.getRuntime().exec 获取反弹shell

    说明 前面写了一篇在Java环境下获取shell的文章.当时使用的语句是: Runtime r = Runtime.getRuntime(); Process p = r.exec(new Strin ...

  5. java runtime.exec 阻塞_关于Runtime.getRuntime().exec()产生阻塞的2个陷阱

    背景 相信做java服务端开发的童鞋,经常会遇到Java应用调用外部命令启动一些新进程来执行一些操作的场景,这时候就会使用到Runtime.getRuntime().exec(),然而这个方法如果不谨 ...

  6. Runtime.getRuntime().exec()----记录日志案例

    Runtime.getRuntime().exec()方法主要用于运行外部的程序或命令. Runtime.getRuntime().exec共同拥有六个重载方法: 1.public Process e ...

  7. Runtime.getRuntime().exec()操作脚本

    项目场景: 在项目中我们需要调用linux语句给企业微信发邮件 问题描述 在服务器上调用命令却能发送成功,但是使用Runtime.getRuntime().exec()却一直发送不成功 @Overri ...

  8. Runtime.getRuntime().exec();里面产生停滞(阻塞,blocking)

    Runtime.getRuntime().exec();里面产生停滞(阻塞,blocking) 标签: Process process=Runtime.getRuntime()里面产生停滞 2007- ...

  9. JAVA命令运行cmd命令得到的结果乱码Runtime.getRuntime().exec();

    Process process = Runtime.getRuntime().exec("cmd /c dir c:"); BufferedReader bufferedReade ...

最新文章

  1. replace函数对dataframe中的值进行替换(所有数据列中的相同值)
  2. java.lang.ClassNotFoundException: Didn't find class com.tzutalin.dlibtest.MainActivity_
  3. 关于libnmap 的一些应用
  4. FPGA实现数字信号处理的定点运算
  5. Linux使用parted进行分区及拓展实验
  6. 下面的语言中哪些语言是动态语言( )
  7. Git得基本使用方法add、commit、push、checkout以及Pull
  8. 双向链表逆置c语言,【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)...
  9. caffe的python接口学习(1):生成配置文件
  10. 虚拟机安装教程win10_Win10封装教程1-VM虚拟机安装及配置
  11. stm32f4c语言编程,如何使用STM32F4的DSP库
  12. 解决下载了pygame后,pycharm依然报错No module named ‘pygame
  13. mysql安装步骤及报错处理(windows)
  14. NS-miracle安装
  15. 手把手教你在自己的扫描器中,集(bai)成(piao)大名鼎鼎的漏扫描工具nuclei
  16. 如何使用docker和docker-compose在本地Testnet上开发EOS区块链
  17. oracle 基础dbms错误,更改对 DBMS 错误的响应
  18. 百万excel导入mysql_百万级xlsx表格导入数据库的实现方案
  19. tty线路规程(discipline)设置
  20. Dialog based MFC

热门文章

  1. 赛可达实验室发布2015测评认证标准
  2. [李景山php]每天TP5-20161225|thinkphp5-Console.php-2
  3. 部分xcode插件可能有新版本
  4. HDFS源码分析DataXceiver之整体流程
  5. 查询数据库最大id加1
  6. LGWR和DBWn的触发条件
  7. 让你的 Qt 桌面程序看上去更加 native(三):自定义 style
  8. LINUX 下 配置MySQL数据库集群
  9. vtigercrm中添加用户字段_linux笔记(一):linux添加用户并赋予root权限
  10. 文档加载完成覆盖_在完成文档之前,作业尚未完成