Runtime.exec()

最近老是和Runtime.exec()打交道。遇到了不少麻烦。从网上搜了不少方法还好一一解决的。现在总结一下吧。
最经典的介绍Runtime.exec()的文章是 Michael C. Daconta 的When Runtime.exec() won’t好吧,他老人家还没有把Runtime.exec()的使用说完全。我来补充下吧。

Sun的doc里其实说明还有其他的用法:
exec(String[] cmdarray, String[] envp, File dir)
Executes the specified command and arguments in a separate process with the specified environment and working directory.

那个dir就是调用的程序的工作目录,这句其实还是很有用的。

Windows下调用程序

Process proc = Runtime . getRuntime () . exec ( " exefile " ) ;

Linux下调用程序就要改成下面的格式

Process proc = Runtime . getRuntime () . exec ( " ./exefile " ) ;

Windows下调用系统命令

String [] cmd = { " cmd " , " /C " , " copy exe1 exe2 " } ;
Process proc = Runtime . getRuntime () . exec ( cmd ) ;

Linux下调用系统命令就要改成下面的格式

String [] cmd = { " /bin/sh " , " -c " , " ln -s exe1 exe2 " } ;
Process proc = Runtime . getRuntime () . exec ( cmd ) ;

Windows下调用系统命令并弹出命令行窗口

String [] cmd = { " cmd " , " /C " , " start copy exe1 exe2 " } ;
Process proc = Runtime . getRuntime () . exec ( cmd ) ;

Linux下调用系统命令并弹出终端窗口就要改成下面的格式

String [] cmd = { " /bin/sh " , " -c " , " xterm -e ln -s exe1 exe2 " } ;
Process proc = Runtime . getRuntime () . exec ( cmd ) ;

还有要设置调用程序的工作目录就要

Process proc = Runtime . getRuntime () . exec ( " exeflie " , null , new File ( " workpath " )) ;

当然最好的执行系统命令的方法就是写个bat文件或是shell脚本。然后调用,那样修改和实现就简点多了。

还有在在Java程序中截获控制台输出[转]这篇文章中有详细的如何在JTextArea中显示拦截的控制台输出。

 

 

JAVA现在执行外部命令,主要的方式,还是通过调用所以平台的SHELL去完成,WINDOWS下面就用CMD,LINUX或者是UNIX下面就用SHELL,下面演示一个对BAT文件的调用,并把结果回显到控制台上,其它的应用程序类。
说明:
一个调用SHELL执行外部
取得外部程序的输出流,采用适当的READER读回来,并显示出来就OK了
下面是源程序:

import java.io.BufferedReader;    
import java.io.IOException;    
import java.io.InputStream;    
import java.io.InputStreamReader;    
   
public class JavaExeBat    
{    
    public static void main(String[] args)    
     {    
         Process p;    
        //test.bat中的命令是ipconfig/all    
         String cmd="c:\\test\\test.bat";    
            
        try    
         {    
            //执行命令    
             p = Runtime.getRuntime().exec(cmd);    
            //取得命令结果的输出流    
             InputStream fis=p.getInputStream();    
            //用一个读输出流类去读    
             InputStreamReader isr=new InputStreamReader(fis);    
            //用缓冲器读行    
             BufferedReader br=new BufferedReader(isr);    
             String line=null;    
            //直到读完为止    
            while((line=br.readLine())!=null)    
             {    
                 System.out.println(line);    
             }    
         }    
        catch (IOException e)    
         {    
             e.printStackTrace();    
         }    
     }    
}   

 

执行结果如下:
Windows IP Configuration
Host Name . . . . . . . . . . . . : Mickey
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : domain

Ethernet adapter 本地连接:
Connection-specific DNS Suffix . : domain
Description . . . . . . . . . . . : Broadcom NetXtreme Gigabit Ethernet
......

转自:http://hi.baidu.com/tangqiaoboy/blog/item/da7428d374a060093bf3cf3a.html

CentOS 7下kkFileView 4.4.0离线部署全攻略(含LibreOffice 7.5配置避坑指南) 本文详细介绍了在CentOS 7环境下离线部署kkFileView 4.4.0的全流程,包括LibreOffice 7.5的配置避坑指南、中文字体解决方案以及企业级运维实践。通过本指南,用户可以在内网环境中快速搭建稳定可靠的文档在线预览服务,提升办公效率。 阅读详情

相关推荐

用Python玩转Carla-Apollo联合仿真:手把手教你实现自动驾驶测试

本文详细介绍了如何使用Python实现Carla-Apollo联合仿真,从环境搭建到自动驾驶算法测试的全流程。通过Carla提供的高逼真仿真环境和Apollo的自动驾驶算法栈,开发者可以高效验证感知、规划和控制模块。文章包含环境配置、Python API操作、桥接实现及实战测试,为自动驾驶开发提供完整解决方案。

wasm7browser的博客 267

Java Runtime.exec()的使用

Sun的doc里其实说明还有其他的用法: exec(String[] cmdarray, String[] envp, File dir) Executes the specified command and arguments in a separate process with the specified environment and working directory. ...

weixin_34007879的博客 1049

U8备份提示“远程组件初始化失败”

问题现象: SQL出现问题后重装,U8没有重装,之后直接附加数据库,U8可以正常登陆,但是在备份的时候提示远程组件初始化失败。 问题原因: 因为重装了SQL,没有进行U8数据源初始化,导致Master库中丢失了存储过程储 解决办法:在Master库重建存储过程 USE [master] GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[U8FileServerExtendProc] @cmdLi.

SamYux 2475

Java魔法堂:找外援的利器——Runtime.exec详解

一、前言                                  Java虽然五脏俱全但总有软肋,譬如获取CPU等硬件信息,当然我们可以通过JNI调用C/C++来获取,但对于对C/C++和Windows API不熟的码农是一系列复杂的学习和踩坑过程。那能不能通过简单一些、学习成本低一些的方式呢?答案是肯定的,在功能实现放在首位的情况下,借他山之石是最简洁有力的做法。而 Runtime....

weixin_34174105的博客 931

PHP服务端 苹果支付(IAP)处理

公司做的app需要做IAP订阅支付,开始觉得和微信的支付流程差不多,做起来还是有点麻烦,主要是网上的文章很少,不能拿来主义。自己做完总结一下,希望对小伙伴们有帮助我就很欣慰了。代码写的不好 不要喷我。。。 首先讲一下我的业务逻辑,也就是php服务端需要做什么事情。 先上图: 下面我详细的讲一下每...

山水的博客 1万+

pytorch实现手语识别

连续手语识别项目,中文数据集CSL

masteryi-0018的博客 1万+

java中Runtime.exec()可能带来的命令注入安全问题的解决办法

我们在使用Runtime.getRuntime().exec()的时候,可以指定一个命令或者脚本,让它执行,类似于调用系统指令来进行完成一项任务。但是这个方法如果有安全检查,它会被报出一个CommandInjection的风险,也就是命令注入的风险,因为命令可能是外部传入,这个时候,正常的命令都不会有任何问题,但是如果被人恶意指定,比如删除系统服务,删除一些特定目录等的操作,就可能造成非常严重的后果。

xnxqwzy的博客 2488

从零开始:在Windows WSL中搭建Openfoam7+blastfoam2.0.0开发环境(避坑大全)

本文详细指导在Windows WSL中搭建OpenFOAM 7与BlastFOAM 2.0.0开发环境,重点解析了安装过程中的常见“坑点”,如编译模式不匹配导致的符号错误,并提供了从系统准备、软件部署到环境验证的完整解决方案,帮助开发者高效构建CFD与爆炸模拟开发平台。

stem5的博客 527

runtime.exec()

Processexec(Stringcommand) 在单独的进程中执行指定的字符串命令。Processexec(String[]cmdarray) 在单独的进程中执行指定命令和变量。Processexec(String[]cmdarray, String[]envp) 在指定环境的独立进程中执行指定...

weixin_34080903的博客 400

C#实现每日定时执行制定程序(附完整源码)

C#实现每日定时执行制定程序(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 867

ABAP RANGES及比较符号

RANGES *选项介绍: *1.SIGN 值为 I 和 E 。 I是包含, E是排除, 一般使用I。 2.OPTION 如果HIGH 为空 ,为单值选择 。有 EQ、NE、GT、LE、LT等逻辑操作 对于的 CP包含 NP是排除 如果HIGH 不为空 为区间选择 有BT,NB可选 *3.LOW 低值 *4.HIGH 高值 lt:less than 小于 le:less than or equal to 小于等于 eq:equal to 等于 ne:

Pegasus666的博客 5390

Runtime.getRuntime().exec()方法

1.使用Runtime.getRuntime().exec()方法 sshUtil.java package com.demo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import

chaochao2113的博客 3万+

跨境电商产品信息抓取:使用Python爬虫进行市场分析

跨境电商平台是指为不同国家和地区的买卖双方提供在线交易服务的电子商务平台。亚马逊(Amazon):全球最大的电商平台之一,提供丰富的商品种类和全球配送服务。eBay:全球知名的在线拍卖和购物网站,支持个人和企业卖家。速卖通(AliExpress):阿里巴巴旗下的跨境电商平台,主要面向全球消费者提供中国制造的商品。Wish:以移动端为主的跨境电商平台,主打低价商品和个性化推荐。这些平台上的商品数据包括商品名称、价格、销量、用户评价、库存等信息,对于市场分析具有重要价值。

2201_76125261的博客 1233

Android Runtime.getRuntime().exec()

getRuntimeRuntime.getRuntime().exec共有六个重载方法:public Process exec(String command)public Process exec(String [] cmdArray)public Process exec(String command, String [] envp)public Process exec(String [] cmdArray, String [] envp)public Process exec(String comma

xianrenli38的博客 7806

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

关于Runtime.getRuntime().exec()的使用和讲解

自己学习Runtime.getRuntime().exec()之后明白其用法,但是总结不出它的功能,在查阅网上资料找到一个比较通俗易懂且全面的答案:在java中,RunTime.getRuntime().exec()实现了调用服务器命令脚本来执行功能需要。 如果我们想在500秒后使电脑关机则需要在运行中输入 cmd ,打开命令弹框中输入: //添加一个60S后自动关闭计算机的计划。 shutdown -s -t 500 通过Runtime.getRuntime().exec()我们可以这样写 //

qq_40474507的博客 2万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java Runtime.getRuntime().exec()执行linux脚本

Java Runtime.getRuntime().exec()执行linux脚本 相关文章链接: linux系统配置(cpu、内存、磁盘等) 观前提示: 本文所使用的IDEA版本为ultimate 2019.1,JDK版本为1.8.0_141,Linux版本为CentOS release 6.10。 最近,在使用Java调用linux命令查询系统信息时发现,执行一些简单的脚步没有问题,但是稍微复杂的脚本变执行失败了。在百度了之后,发现加上 String[] cmd = new String[]{"s

weixin_43611145的博客 4462

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java Runtime.exec()注意事项

0. Runtime.exec()用来执行外部程序或命令1. Runtime.exec() 有四种调用方法    * public Process exec(String command);     * public Process exec(String [] cmdArray);     * public Process exec(String command, String [] envp);     * public Process exec(String [] cmdArray,

Step Up 3万+

Android Runtime.getRuntime().exec() 使用方法

Android Runtime.getRuntime().exec() 使用方法 苍痕 2015-04-08 15:05:01 26143 收藏 5 版权 Android 可以通过Runtime.getRuntime().exec()方法来执行命令或者创建进程。 1.Runtime.getRuntime().exec共有六个重载方法: public Process exec(String command) 在单独的进程中执行指定的字符串命令。 public Process exec(Stri...

cxu123321的博客 3560

Android: Runtime.exec()的陷阱

<br />When Runtime.exec() won'tNavigate yourself around pitfalls related to the Runtime.exec() methodSummary<br />In this installment of Java Traps, Michael Daconta discusses one new pitfall and revisits another from his previous column. Originating in the

TODO: Android; Linux; Cloud; 2万+

java runtime exec 结果,Java Runtime exec()方法

Java Runtime exec()方法java.lang.Runtime.exec(String command, String[] envp, File dir)方法在指定环境和工作目录的独立进程中执行指定的字符串命令。这是一个方便的方法。exec(command, envp, dir)调用行为完全相同于调用 exec(cmdarray, envp, dir),其中cmdarray是命令的...

weixin_32367041的博客 1344

Java Runtime.exec()用法

转自:https://www.cnblogs.com/mingforyou/p/3551199.html Java Runtime.exec()的使用 Sun的doc里其实说明还有其他的用法: exec(String[] cmdarray, String[] envp, File dir) Executes the specified command and arguments...

weixin_30287169的博客 160

命令执行之RunTime.getRuntime().exec()

在java中,RunTime.getRuntime().exec()实现了调用服务器命令脚本来执行功能需要。 用法: public Process exec(String command)-----在单独的进程中执行指定的字符串命令。 public Process exec(String [] cmdArray)---在单独的进程中执行指定命令和变量 public Process exec(String command, String [] envp)----在指定环境的独立进...

qq_41989372的博客 6736

Runtime.getRuntime.exec()使用

我在一个项目中需要使用java调用python代码,我就想到了用java调用命令行执行,这里就是在执行过程中的一些见解。

qq_44878786的博客 1856

java runtime.exec() 的编写详细介绍

那就首先说点Runtime类吧,他是一个与JVM运行时环境有关的类,这个类是Singleton的。我说几个自己觉得重要的地方。 1、Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法。 2、Runtime上其

曹胜欢 2万+

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

本文来自网易云社区背景相信做java服务端开发的童鞋,经常会遇到Java应用调用外部命令启动一些新进程来执行一些操作的场景,这时候就会使用到Runtime.getRuntime().exec(),然而这个方法如果不谨慎很容易掉进陷阱。我们的一个PDF转码服务就踩到了这个坑掉进陷阱,这个转码服务主要是对pdf进行加密和转码成swf。这个服务上线后大部分时间都是稳定运行的,但是隔一段时间就会死掉,然后...

weixin_34408624的博客 1万+
上一篇: java runtime.exec() 的编写
下一篇: Java Runtime.exec()注意事项 .
CoderRobin
博客等级 码龄16年 0粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值