/** * User: weichun.zhan * Date: 12-9-27 * Time: 下午5:52 */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class GoodWindowsExec { public static void main(String ... args) { if (args.length < 1) { System.out.println("USAGE: java GoodWindowsExec <cmd>"); System.exit(1); } try { // String osName = System.getProperty("os.name"); // String[] cmd = new String[3]; // if (osName.equals("Windows Vista")) { // cmd[0] = "cmd.exe"; // cmd[1] = "/C"; // cmd[2] = args[0]; // } else if (osName.equals("Windows 95")) { // cmd[0] = "command.com"; // cmd[1] = "/C"; // cmd[2] = args[0]; // } // // System.out.println("Execing " + cmd[0] + " " + cmd[1] // + " " + cmd[2]); Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(args[0]); // any error message? StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(), "ERROR"); errorGobbler.setName("ThreadError"); // any output? StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(), "OUTPUT"); outputGobbler.setName("ThreadOutput"); // kick them off outputGobbler.start(); errorGobbler.start(); // any error??? int exitVal = proc.waitFor(); System.out.println(Thread.currentThread().getName() +" ==> ExitValue: " + exitVal); } catch (Throwable t) { t.printStackTrace(); } } }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * User: weichun.zhan * Date: 12-9-27 * Time: 下午6:46 */ public class StreamGobbler extends Thread { InputStream is; String type; StreamGobbler(InputStream is, String type) { this.is = is; this.type = type; } public void run() { System.out.println( Thread.currentThread().getName() ); try { InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line = null; while ((line = br.readLine()) != null) System.out.println( Thread.currentThread().getName() + " => " + type + ">" + line); } catch (IOException ioe) { ioe.printStackTrace(); } } }
http://www.javaworld.com/jw-12-2000/jw-1229-traps.html
相关推荐
在Java编程语言中,`Process`类是处理操作系统进程的核心组件。它允许Java应用程序与操作系统交互,执行外部命令,例如运行系统工具或者控制其他应用程序。本文将深入探讨`JAVA Process`的使用,以及如何通过Java...
Java Process Manager是一个基于Java语言开发的工具,它利用JNI(Java Native Interface)技术与Windows 32 SDK(Software Development Kit)进行交互,旨在提供类似操作系统任务管理器的功能,特别是针对Java进程的...
"Image-Process.rar_Java process-Thread_image process java_java im"这个标题暗示了我们将探讨如何在Java中处理图像,特别是涉及线程管理和多线程图像处理。 首先,让我们了解Java中的图像处理基础。Java提供了`...
实现内存动态分区,运用Java语言,一共四个类,这是process类
在Java编程语言中,对象创建的过程是一个至关重要的概念,它涉及到类的实例化和内存管理。下面我们将深入探讨这个主题。 首先,让我们了解一个Java对象的生命周期,它通常包括以下几个步骤: 1. **定义类(Class ...
然而,在混淆过程中可能会遇到各种问题,其中"Can't process class"错误是常见的一种。这个错误通常表明ProGuard在处理某个类时遇到了问题,无法完成混淆。下面我们将深入探讨这个问题的原因以及解决办法。 首先,...
首先打开.electron-vue/webpack.renderer.config.js,在大约第125行的new HtmlWebpackPlugin中任意位置
本项目名为"java-image-process",显然这是一个基于Java的图像处理应用程序,它提供了对图像进行各种操作的能力。通过这个程序,我们可以实现图像的加载、显示、保存,以及一系列如滤镜、色彩调整等高级功能。 在...
Java Process详解及实例 Java Process是Java语言中一个重要的概念,它允许Java程序与外部进程进行交互。通过Java Process,可以实现对外部命令的调用、文件操作、系统设置等功能。 在Java中,Process类是Java ...
### Java Community Process (JCP) 与 JavaServer Faces (JSF) #### 一、Java Community Process (JCP) Java Community Process (JCP) 是一个开放的技术社区,它为 Java 平台上的技术标准制定提供了框架和支持。...
Java Process命令小全 Java Process命令小全是Java中的一种命令,用于执行操作系统的命令。通过Runtime.getRuntime().exec(commandStr)方法可以调用执行cmd指令。 cmd命令是Windows操作系统中的命令行工具,用于...
Java中的`Process`类是用于表示操作系统级别的进程的抽象类。这个类允许Java应用程序与操作系统交互,执行系统命令,例如启动新的进程、读取进程的输出流、写入进程的输入流以及控制进程的生命周期。在Java中,我们...
下面我们将详细探讨如何利用`app_process`来实现这一目标,以及在Java中如何进行相关操作。 首先,`app_process`是Android系统中的一个可执行文件,它位于系统的`/system/bin`目录下,用于启动一个应用程序的主进程...
这里通过`cmd.exe`调用`wmic`命令,传入参数`process where name='java-test.exe' call terminate`来终止名为`java-test.exe`的进程。 - `IOException`处理:如果执行命令时出现错误,如无法找到命令或权限不足等...
If you are a skilled Java programmer but are concerned about the Java coding interview process this real world guide can help you land your next position Java is a popular and powerful language that ...
Java图像处理程序模板是用于开发图像操作和分析应用的基础框架,它可以帮助开发者快速构建功能丰富的图像处理项目。这个模板可能包含了一系列预定义的类和方法,涵盖了常见的图像处理任务,如图像读取、显示、保存、...
Forker 是一个 Java 库,可让您更好地控制外部进程并提供 ProcessBuilder 的替代品。 该库基本上有 3 个主要组件: ForkerClient 替换 ProcessBuilder 只需构建一个进程,让 Forker 处理检查退出代码和重定向或捕获...
Java提供了Runtime类和Process类来实现这一功能。以下是如何使用Java调用Windows命令行的详细步骤和注意事项: 1. **调用外部程序** - 使用`Runtime.getRuntime().exec()`方法创建一个子进程来执行指定的可执行...
Java 常用的流程控制操作经典代码Java process control operations used classic code
进程控制块的设计与实现 进程的创建,执行,阻塞,唤醒。 还有进程调度,采用了短作业优先和先来先服务算法