在单独的进程中执行指定的字符串命令。
在单独的进程中执行指定命令和变量。
在指定环境的独立进程中执行指定命令和变量。
在指定环境和工作目录的独立进程中执行指定的命令和变量。
在指定环境的单独进程中执行指定的字符串命令。
在有指定环境和工作目录的独立进程中执行指定的字符串命令。
dir 指定了新子进程的工作目录。如果 dir 为 null,那么子进程会继承当前进程的当前工作目录
waitfor导致当前线程等待,如有必要,一直要等到由该 <code>process</code> 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程,<code>0</code> 表示正常终止。
一些平台只为标准输入输出提供有限的缓存。错误的写子进程的输入流或者错误的都子进程的输出流都有可能造成子进程的阻塞,甚至是死锁。
getinputstream 得到正常信息
runtime.exec() 不等同于直接执行command line命令!
runtime.exec()很有局限性,对有些命令不能直接把command line里的内容当作string参数传给exec().
比如重定向等命令。举个例子:
javap -l xxx > output.txt
这时要用到exec的第二种重载
把整个命令都当成/bin/sh的参数传入
linux下
process p = runtime.getruntime().exec(new string[]{"/bin/sh","-c","javap -l xxx > output.txt"});
windows下
process p = runtime.getruntime().exec(new string[]{"cmd","/c","javap -l xxx > output.txt"});
linux执行shell脚本(带参数)
1
假设有一个shell脚本文件test.sh,有两个参数parm1,parm2,java调用的方法如下:
string[] cmd = {"/bin/sh","-c","test.sh parm1 parm2"};
runtime.getruntime().exec(cmd);
2.
不带参数
带参数传入数组
<a href="http://www.linuxidc.com/linux/2012-07/64526.htm" target="_blank">http://www.linuxidc.com/linux/2012-07/64526.htm</a>
<a href="http://www.linuxidc.com/linux/2012-07/64526.htm" target="_blank"></a>