Java执行命令获取结果并超时退出
来源:互联网 发布:凯旋软件 编辑:程序博客网 时间:2024/04/30 16:27
最近做个功能,要用java执行命令,需要获取结果,同时也要求命令执行只能在一个固定的时间内结束,否则就应该超时退出。我想这个功能网上应该一大把吧,没必要自已写,就随便搜了一下,找到一个csdn的,下载还要三分。三分就三分吧,下来一看,居然是再起一个线程去监视执行线程。靠,浪费老子三分。干脆自已看了看api,自已搞。以下是我的实现,有需要的同学可以参考:
/** * 命令执行 * @param cmd * @param envs * @param timeout * @return */private String execCMD(String cmd, String[] envs, int timeout) {Process process = null;StringBuilder sbStd = new StringBuilder();StringBuilder sbErr = new StringBuilder();long start = System.currentTimeMillis() / 1000;try {if (envs == null) {process = Runtime.getRuntime().exec(cmd);} else {process = Runtime.getRuntime().exec(new String[] { "/bin/sh", "-c", cmd }, envs);}BufferedReader brStd = new BufferedReader(new InputStreamReader(process.getInputStream()));BufferedReader brErr = new BufferedReader(new InputStreamReader(process.getErrorStream()));String line = null;while (true) {if (brStd.ready()) {line = brStd.readLine();sbStd.append(line + "\n");continue;} if (brErr.ready()) {line = brErr.readLine();sbErr.append(line + "\n");continue;} if (process != null) {try { process.exitValue(); break; } catch (IllegalThreadStateException e) { } }if (System.currentTimeMillis() / 1000 - start > timeout) {sbErr.append("\n命令执行超时退出.");break;}try {TimeUnit.MILLISECONDS.sleep(500);} catch (InterruptedException e) {}}} catch (IOException e) {} finally {if (process != null) {process.destroy();}}if (sbErr.length()>0) {return sbErr.toString();} else {return sbStd.toString();}}
0 0
- Java执行命令获取结果并超时退出
- java 执行shell命令,并获取执行结果
- java调用shell命令并获取执行结果
- java调用shell命令并获取执行结果
- java调用shell命令并获取执行结果
- java调用shell命令并获取执行结果
- java调用shell命令并获取执行结果
- java调用shell命令并获取执行结果
- java执行cmd命令并获取返回结果字符串
- 执行命令并获取结果函数
- Java执行linux命令 获取执行结果
- Java调用命令行并获取执行结果
- Java调用命令行并获取执行结果
- Java调用命令行并获取执行结果
- 使用Java代码执行系统命令/shell命令, 并获取输出结果
- Java开发之调用shell命令并获取执行结果(Mac)
- C语言-程序中执行cmd命令并获取结果
- c#.NET 调用命令控制台 并获取执行结果
- MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法
- [Android源码]Handler分析
- Python Date & Time
- 数据库设计之规范化
- 第七章 进程环境
- Java执行命令获取结果并超时退出
- Microsoft SQL Server 执行dos命令
- 横向滑动的HorizontalListView滑动指定位置的解决方法
- workspace at in use or cannot be created,choose a different one
- IOS开发笔记(2)页面之间传递数据几种方式比较
- MSSQL备份语句
- Hadoop2.61集群安装配置教程
- Android开源项目分类汇总
- 查看死锁