`

java process can not exited

    博客分类:
  • java
 
阅读更多

 

/**
 * 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编程语言中,`Process`类是处理操作系统进程的核心组件。它允许Java应用程序与操作系统交互,执行外部命令,例如运行系统工具或者控制其他应用程序。本文将深入探讨`JAVA Process`的使用,以及如何通过Java...

    Java Process Manager

    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

    "Image-Process.rar_Java process-Thread_image process java_java im"这个标题暗示了我们将探讨如何在Java中处理图像,特别是涉及线程管理和多线程图像处理。 首先,让我们了解Java中的图像处理基础。Java提供了`...

    内存动态分区Java - process类

    实现内存动态分区,运用Java语言,一共四个类,这是process类

    java object create process

    在Java编程语言中,对象创建的过程是一个至关重要的概念,它涉及到类的实例化和内存管理。下面我们将深入探讨这个主题。 首先,让我们了解一个Java对象的生命周期,它通常包括以下几个步骤: 1. **定义类(Class ...

    android 混淆出错 Can't process class 解决办法

    然而,在混淆过程中可能会遇到各种问题,其中"Can't process class"错误是常见的一种。这个错误通常表明ProGuard在处理某个类时遇到了问题,无法完成混淆。下面我们将深入探讨这个问题的原因以及解决办法。 首先,...

    OrdosX#blog#electron-vue报错process-is-not-defined的解决方法1

    首先打开.electron-vue/webpack.renderer.config.js,在大约第125行的new HtmlWebpackPlugin中任意位置

    java-image-process.rar_java_java image process

    本项目名为"java-image-process",显然这是一个基于Java的图像处理应用程序,它提供了对图像进行各种操作的能力。通过这个程序,我们可以实现图像的加载、显示、保存,以及一系列如滤镜、色彩调整等高级功能。 在...

    Java Process详解及实例

    Java Process详解及实例 Java Process是Java语言中一个重要的概念,它允许Java程序与外部进程进行交互。通过Java Process,可以实现对外部命令的调用、文件操作、系统设置等功能。 在Java中,Process类是Java ...

    Java Community Process 讲解

    ### Java Community Process (JCP) 与 JavaServer Faces (JSF) #### 一、Java Community Process (JCP) Java Community Process (JCP) 是一个开放的技术社区,它为 Java 平台上的技术标准制定提供了框架和支持。...

    Java Process命令小全

    Java Process命令小全 Java Process命令小全是Java中的一种命令,用于执行操作系统的命令。通过Runtime.getRuntime().exec(commandStr)方法可以调用执行cmd指令。 cmd命令是Windows操作系统中的命令行工具,用于...

    Java Process类的详解及实例代码

    Java中的`Process`类是用于表示操作系统级别的进程的抽象类。这个类允许Java应用程序与操作系统交互,执行系统命令,例如启动新的进程、读取进程的输出流、写入进程的输入流以及控制进程的生命周期。在Java中,我们...

    利用app_process实现免root调用shell_Java_下载.zip

    下面我们将详细探讨如何利用`app_process`来实现这一目标,以及在Java中如何进行相关操作。 首先,`app_process`是Android系统中的一个可执行文件,它位于系统的`/system/bin`目录下,用于启动一个应用程序的主进程...

    Java通过进程名称杀进程

    这里通过`cmd.exe`调用`wmic`命令,传入参数`process where name='java-test.exe' call terminate`来终止名为`java-test.exe`的进程。 - `IOException`处理:如果执行命令时出现错误,如无法找到命令或权限不足等...

    [Java] Java 编程面试揭秘 英文版

    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 imageProcess 图像处理程序模板

    Java图像处理程序模板是用于开发图像操作和分析应用的基础框架,它可以帮助开发者快速构建功能丰富的图像处理项目。这个模板可能包含了一系列预定义的类和方法,涵盖了常见的图像处理任务,如图像读取、显示、保存、...

    Java Process Utils (Forker):用于更好地控制外部进程的 Java 库-开源

    Forker 是一个 Java 库,可让您更好地控制外部进程并提供 ProcessBuilder 的替代品。 该库基本上有 3 个主要组件: ForkerClient 替换 ProcessBuilder 只需构建一个进程,让 Forker 处理检查退出代码和重定向或捕获...

    java调用windows命令

    Java提供了Runtime类和Process类来实现这一功能。以下是如何使用Java调用Windows命令行的详细步骤和注意事项: 1. **调用外部程序** - 使用`Runtime.getRuntime().exec()`方法创建一个子进程来执行指定的可执行...

    Java_process_control_operations_used_classic_code._process contr

    Java 常用的流程控制操作经典代码Java process control operations used classic code

    process.JAVA

    进程控制块的设计与实现 进程的创建,执行,阻塞,唤醒。 还有进程调度,采用了短作业优先和先来先服务算法

Global site tag (gtag.js) - Google Analytics