Runtime.getRuntime().exec()调用外部程序
场景: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()调用外部程序相关推荐
- 如何在JAVA代码中执行 exec master..xp_cmdshell @cmd // 当作SQL语句调用就成了 或者调用 Runtime.getRuntime().exec
例如: //package FS; import java.io.IOException; import java.sql.*; public class BCP { static Connecti ...
- java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本
举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...
- 调用Runtime.getRuntime().exec()执行Linux脚本导致程序挂住的问题分析
问题: 在Java程序中,通过Runtime.getRuntime().exec()执行一个Linux脚本导致程序被挂住,而在终端上直接执行这个脚本则没有任何问题. 原因: 先来看Java代码: pu ...
- java Runtime.getRuntime().exec 获取反弹shell
说明 前面写了一篇在Java环境下获取shell的文章.当时使用的语句是: Runtime r = Runtime.getRuntime(); Process p = r.exec(new Strin ...
- java runtime.exec 阻塞_关于Runtime.getRuntime().exec()产生阻塞的2个陷阱
背景 相信做java服务端开发的童鞋,经常会遇到Java应用调用外部命令启动一些新进程来执行一些操作的场景,这时候就会使用到Runtime.getRuntime().exec(),然而这个方法如果不谨 ...
- Runtime.getRuntime().exec()----记录日志案例
Runtime.getRuntime().exec()方法主要用于运行外部的程序或命令. Runtime.getRuntime().exec共同拥有六个重载方法: 1.public Process e ...
- Runtime.getRuntime().exec()操作脚本
项目场景: 在项目中我们需要调用linux语句给企业微信发邮件 问题描述 在服务器上调用命令却能发送成功,但是使用Runtime.getRuntime().exec()却一直发送不成功 @Overri ...
- Runtime.getRuntime().exec();里面产生停滞(阻塞,blocking)
Runtime.getRuntime().exec();里面产生停滞(阻塞,blocking) 标签: Process process=Runtime.getRuntime()里面产生停滞 2007- ...
- JAVA命令运行cmd命令得到的结果乱码Runtime.getRuntime().exec();
Process process = Runtime.getRuntime().exec("cmd /c dir c:"); BufferedReader bufferedReade ...
最新文章
- replace函数对dataframe中的值进行替换(所有数据列中的相同值)
- java.lang.ClassNotFoundException: Didn't find class com.tzutalin.dlibtest.MainActivity_
- 关于libnmap 的一些应用
- FPGA实现数字信号处理的定点运算
- Linux使用parted进行分区及拓展实验
- 下面的语言中哪些语言是动态语言( )
- Git得基本使用方法add、commit、push、checkout以及Pull
- 双向链表逆置c语言,【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)...
- caffe的python接口学习(1):生成配置文件
- 虚拟机安装教程win10_Win10封装教程1-VM虚拟机安装及配置
- stm32f4c语言编程,如何使用STM32F4的DSP库
- 解决下载了pygame后,pycharm依然报错No module named ‘pygame
- mysql安装步骤及报错处理(windows)
- NS-miracle安装
- 手把手教你在自己的扫描器中,集(bai)成(piao)大名鼎鼎的漏扫描工具nuclei
- 如何使用docker和docker-compose在本地Testnet上开发EOS区块链
- oracle 基础dbms错误,更改对 DBMS 错误的响应
- 百万excel导入mysql_百万级xlsx表格导入数据库的实现方案
- tty线路规程(discipline)设置
- Dialog based MFC
热门文章
- 赛可达实验室发布2015测评认证标准
- [李景山php]每天TP5-20161225|thinkphp5-Console.php-2
- 部分xcode插件可能有新版本
- HDFS源码分析DataXceiver之整体流程
- 查询数据库最大id加1
- LGWR和DBWn的触发条件
- 让你的 Qt 桌面程序看上去更加 native(三):自定义 style
- LINUX 下 配置MySQL数据库集群
- vtigercrm中添加用户字段_linux笔记(一):linux添加用户并赋予root权限
- 文档加载完成覆盖_在完成文档之前,作业尚未完成