java Runtime.exec方法详解_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java Runtime.exec方法详解

java Runtime.exec方法详解

 2019/7/11 16:09:21  liyixing1  程序员俱乐部  我要评论(0)
  • 摘要:1.关于CMD(为了让exec更正常的运行,往往会通过cmd来启动命令)cmd/cdir是执行完dir命令后关闭命令窗口。cmd/kdir是执行完dir命令后不关闭命令窗口。cmd/cstartdir会打开一个新窗口后执行dir指令,原窗口会关闭。cmd/kstartdir会打开一个新窗口后执行dir指令,原窗口不会关闭。其中/C会阻塞java的线程,因为java需要等待进程结束/k的话它怎么都获取不到输出的信息,无论是输入流还是错误输入流都不行!/k还没测试是不是会阻塞。2.调用多个命令
  • 标签:详解 方法 Java



1.关于CMD(为了让exec更正常的运行,往往会通过cmd来启动命令)

cmd /c dir 是执行完dir命令后关闭命令窗口。

cmd /k dir 是执行完dir命令后不关闭命令窗口。

cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。

cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。


其中/C会阻塞java的线程,因为java需要等待进程结束

/k的话它怎么都获取不到输出的信息,无论是输入流还是错误输入流都不行!

/k还没测试是不是会阻塞。

2.调用多个命令,这个学一下bat脚本,就知道了,bat脚本(exec 其实也算是bat的一个环境,),在bat中可以通过&&把多个命令拼接一起运行,bat的环境其实是通过cmd.exe命令获取到的。所以前面必须通过cmd

class="bat" name="code">exec("cmd /c set CLASSPATH=D:\\java\\test && javac D:\\java\\java.java && java D:\\java\\ com.a.A")



3.参数化



第一个参数cmdarray——包含所调用命令极其参数的数组。

例如:shutdown -s -t 3600——在一小时后自动关机命令

我们可以构建这样的一个数组:String arr[] = {"shutdown","-s","-t","3600"};

数组第一个元素“shutdown”是命令,其后的三个-s、-t、3600都是参数,然后直接将这个数组注入exec方法即可。

需要注意的是,在调用这个方法时我们不能将命令和参数放在一起——String arr[] = {"shutdown -s -t 3600"};


然后是第二个参数:envp——字符串数组,其中每个元素的环境变量的设置格式为 name=value,如果子进程应该继承当前进程的环境,或该参数为null。

String envp[] = {"CLASSPATH=D://"}


第三个参数,运行环境目录,对应的就是java的System.getProperty("user.dir")
Process process = Runtime.getRuntime().exec(new String[]{"shutdown","-s","-t","3600"}, null, new File("D:/TEST"));
  • 大小: 16.9 KB
  • 大小: 11 KB
  • 查看图片附件
上一篇: 6月份Github上最热门的Java开源项目! 下一篇: 没有下一篇了!
发表评论
用户名: 匿名