java runtime 返回值_Java Runtime.exec()注意事项 | 学步园-程序员宅基地

技术标签: java runtime 返回值  

转载自:http://blog.csdn.net/flying881114/archive/2011/03/23/6272472.aspx

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, String [] envp);

2. 得到程序执行返回值, 0为success

需要用waitFor()函数,比如

Process p = Runtime.getRuntime().exec("javac");

(处理.....)

int exitVal = p.waitFor();

3. 得到程序执行的结果或错误信息

需要用BufferedInputStream 和 BufferReader来得到,否则程序会hang

比如得到错误信息用p.getErrorStream(),然后输出即可:

BufferedInputStream in = new BufferedInputStream(p.getErrorStream());

BufferedReader br = new BufferedReader(new InputStreamReader(in));

4. Runtime.exec() 不等同于直接执行command line命令!

啊,我算是在这里吃了苦头了。Runtime.exec()很有局限性,对有些命令不能直接把command line里的内容当作String参数传给exec().

比如重定向等命令。举个例子:

javap -l xxx > output.txt

这时要用到exec的第二种重载,即input 参数为String[]:

Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c","javap -l xxx > output.txt"});

参考资料:

http://blog.csdn.net/westwin/archive/2005/04/22/358377.aspx

http://blog.csdn.net/moreorless/archive/2009/05/15/4182883.aspx

http://blog.csdn.net/HEYUTAO007/archive/2010/06/30/5705499.aspx

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33905143/article/details/114611564

智能推荐

【实例】ZYNQ实现PL和PS端数据交互的DDR3 AXI_DMA读写功能及中断通知-程序员宅基地

文章浏览阅读775次,点赞15次,收藏9次。该工程源代码实现了通过ddr3的axi_dma进行PL和PS端的数据交互,并支持PS端通过gpio控制axi_dma读写模块的使能,以及通过axi_lite寄存器配置dma的读写地址范围和数据长度。功能:实现PL和PS端通过ddr3的axi_dma读和写进行数据交互,PS端可通过gpio控制axi_dma读写模块的使能,PS端可通过axi_lite寄存器配置dma的读和写的地址范围或数据长度,PL端的dma写完成后通过中断信号通知PS端。用户可通过该例程比较快速的搭建自己的更丰富的应用,节省您的开发周期。

C++项目中使用Redis读写数据_c++ 读写redis-程序员宅基地

文章浏览阅读2.2k次。auto redis = Redis("tcp://[email protected]:6379/0?keep_alive=true"); redis.hset("LogonServer", "1","192.168.8.105:8600"); auto v = redis.hget("LogonServer","1"); redis.save();_c++ 读写redis

day9-格式字符串及函数作业_、、、:能丨氵‘、、、 、串↑、∴、、∴ 、、-程序员宅基地

文章浏览阅读172次。编写一个函数,交换指定字典的key和value。 例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'} def change_1(dic): """ 交换字典的键和值并打印 :param dic: 指定的字典 :return: 交换键和值后的字典 """ dic1 = dict([(value,key) for key,value in dic.items()]).._、、、:能丨氵‘、、、 、串↑、∴、、∴ 、、

【Qt一骚操作】多选下拉框multicombox 的研究_qcombox点击多选-程序员宅基地

文章浏览阅读1.7k次。针对multicombox 的研究前言由于Qt仅仅提供多选下拉框只能选择单项项目,要实现多选项选择,因此需要自己设计和编码,针对multicombox 的研究如下,总结网上及自己实际经验,汇总如下:(1)下拉listview设置左边为样式A为“fusion”样式,在ubuntu下的样式似乎就是这个,它的特点是下拉列表会把文字框和箭头盖住。右边样式B为“windowsvista”样式,它是win10下Qt的默认样式,其特点是下拉列表会显示在文字框和箭头下方,所以不会盖住文字框和箭头。 那么如何在不改变_qcombox点击多选

Ubuntu和WIN10双系统下WIN10快速启动带来的一些问题和解决(AX200网卡,NTFS分区访问)_win10 乌班图双系统,乌班图没有wifi选项-程序员宅基地

文章浏览阅读2k次,点赞5次,收藏3次。1 本人是Win10 1909+Ubuntu20.04单硬盘双系统台式机用户,近期老是发现Ubuntu20.04里面AX200无线网卡不支持,右上角没有wifi图标,蓝牙是正常的。有线网卡正常。以前按照这位老兄的教程装过没问题https://zhangyiming748.github.io/2019/12/05/useAX200OnUbuntu/刚开始是以为UBuntu自动更新的锅,但是现在再次重装几次还是不行 ,查看驱动目录文件没问题2 另外发现一个问题在Ubuntu里面无法对NTFS分区写入文件,_win10 乌班图双系统,乌班图没有wifi选项

腾讯混合云存储 TStor 系列再添新成员,并行存储一体机正式发布​-程序员宅基地

文章浏览阅读193次。​最近国内某大型互联网公司依靠其数据优势成功上市,可见数据的重要性,而数据和存储密不可分,您真的知道自己需要更高性能存储吗?在当今数据爆发式增长的时代,数据已经成为很多行业最重要的资源,没有之一。数据左右着很多新兴企业的命脉,收集数据、分析数据和应用数据的循环已经变为企业发展的根本,依靠数据创造更大的价值,并持续的加强和优化数据管理流程,让数据型驱动的行业不断进化。常规的存储只能满足数据保存的基本需求,或者顺带一些基本的数据混合管理,而要真正挖掘数据的价值,采用高性能..._tstor

随便推点

springmvc返回String乱码问题_springmvc return string乱码-程序员宅基地

文章浏览阅读1.8k次。不多说,直接上码 本人测试成功,可以解决Springmvc返回为String的乱码问题<mvc:annotation-driven > <!-- 消息转换器 --> <mvc:message-converters register-defaults="true"> <bean class="org.spri..._springmvc return string乱码

linux服务器 确认网卡(网口)对应的配置文件_cannot identify nic-程序员宅基地

文章浏览阅读1.5k次。每次给服务器装完系统,总是无法将网口和配置文件对应,笨办法一个一个试,有的服务器可以用ifdown、ifup来观察网卡指示灯,但是这个方法只对一部分服务器有效。下面两种方法可以快速对应:方法一:使用ethtool(在服务器旁)如果在服务器旁边则可通过以下命令进行测试:ethtool -p eth0此时eth0文件对应的网口就会闪烁。(eth0文件就是 /etc/sysconfig/network-scripts/ 目录下以 ifcfg- 开头的文件名的后半部分)方法二:使用mii-tool(不_cannot identify nic

Python调用C/C++动态链接库_pythond 动态库-程序员宅基地

文章浏览阅读284次。Python调用C/C++动态链接库的需求在自动化测试过程中,难免会遇到语言混合使用的情况,这不,我们也遇到了。初步决定采用Robot Framework作为自动化测试框架后,其支持Java和Python,而Python作为主流的语言,怎么能放弃使用它的机会^_^。 然而产品采用是古老90年代开发的C/S结构,因为古老,当时也没有考虑到对产品的测试进行自动化,Client端并没有预留CLI(Com..._pythond 动态库

JavaWeb--快速入门Servlet-程序员宅基地

文章浏览阅读956次,点赞9次,收藏8次。由于篇幅限制,小编在此截出几张知识讲解的图解《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!也去过华为、OPPO等大厂,18年进入阿里一直到现在。**深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

vue给指定class设置css样式_vue通过style或者class改变样式-程序员宅基地

文章浏览阅读4.4k次。vue通过style或者class改变样式的实例代码通过style改变样式通过className改变样式​v-bind:class="{ active: isActive, 'text-danger': hasError }">data: {isActive: true,hasError: false}.active{...}.text-danger{...}PS:下面看下Vue的一些样式(..._通过class 赋值给样式

如何搭建个人博客_博客搭建-程序员宅基地

文章浏览阅读1w次,点赞6次,收藏59次。先碎碎念一下,最近在学习springboot项目,在b站跟着up主研究如何写一个简易的博客来着,后来发现可以直接简易的搭建一个博客(都不用写代码,直接有现成的。。。)倒腾的一晚上,终于搭好了,虽然搭建博客都是拿现成的,但是有一个自己的博客还是很开心的。这个博客是基于halo博客+Sakura主题博客搭建参考up主的视频搭建一个简易的博客本文默认读者有一台云服务器以及了解相关linux知识第一步因为halo博客需要的环境为jdk11,所以第一步就是安装jdk啦配置jdk 11yum ins_博客搭建

推荐文章

热门文章

相关标签