虽然很想休息,但是想想还是要把今天学的东西记下来,不然以后再用还是新知识。

新建一个线程类读取子进程的汇报信息和错误信息,避免阻塞

 class StreamGobbler extends Thread
{
InputStream is;
String type; StreamGobbler(InputStream is, String type)
{
this.is = is;
this.type = type;
} public void run()
{
try
{
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null)
System.out.println(type + ">" + line);
} catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}

创建子进程的RUN方法

//cmd命令
String s = "I:/OpenModelica-v1.9.7/bin/omc.exe "+courseFile+"/modelica/tcs.mos"; //执行cmd命令
Process proc = Runtime.getRuntime().exec(s); //接收子进程的汇报信息和错误信息,避免阻塞
new StreamGobbler(proc.getInputStream(),"INFO").start();
new StreamGobbler(proc.getErrorStream(),"ERROR").start(); //获取子进程执行结果状态
int status=proc.waitFor();
if (status == 0){
System.out.println(n+"执行完毕");
detect(n);
}else
System.out.println(n+"执行失败"); //销毁子进程
proc.destroy();

注:JAVA进程waitFor() 阻塞总结参照博客https://blog.csdn.net/jinhao2003/article/details/2136919

最新文章

  1. 解决SmartGit序列号问题
  2. OAuth2 Backend Web Application 验证过程
  3. SQL:实现流水账的收入、支出、本期余额
  4. Django- 分页
  5. Bumped Map And Normal Map
  6. C# 中的virtural和abstract
  7. 通过Percona XtraBackup添加一个slave
  8. Eclipse+Selenium自动化测试脚本设计V1.0
  9. android120 zhihuibeijing 开机页面
  10. uva 352 - The Seasonal War
  11. CentOS-6.3安装配置JDK-7或 JDK-6
  12. [NOIP2011] 聪明的质监员 二分+前缀和
  13. 《从零玩转JavaWeb+项目实战》-系列课堂录制计划
  14. Nginx (三) 使用Keepalived搭建高可用服务
  15. 从.Net到Java学习第十一篇——SpringBoot登录实现
  16. Jenkins不能及时更新svn到最新代码
  17. 牛客练习赛A 【BFS】
  18. Hadoop 综合揭秘——MapReduce 基础编程(介绍 Combine、Partitioner、WritableComparable、WritableComparator 使用方式)
  19. DUAL PORT RAM应用实例
  20. P5057 [CQOI2006]简单题(线段树)

热门文章

  1. P3243 [HNOI2015]菜肴制作(拓扑排序)
  2. 从percona server 5.7换到mariadb 10.2
  3. NPM安装步骤
  4. devexpress 之 ChartControl
  5. bzoj 4585 烟火表演 - 动态规划 - 可并堆
  6. bzoj 3489 A simple rmq problem - 线段树
  7. PID算法控制简单理解
  8. 向eclipse的JavaWeb项目中导入jar包
  9. topcoder srm list
  10. MySQL 日期时间函数