`

java终止操作系统进程的demo

 
阅读更多

判断操作系统是否有javaw.exe进程,如有,则杀死此进程

/**
 * 
 */
package cn.edu.zzuli.huang;

/**
 * @author moon
 *
 */
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class ProcessHandler {

    /**
     * @author coldanimal; ProcessHandler windowns version.
     */
    public static boolean findRunningProcess(String processName) {
        String platform = System.getProperty("os.name");
        if (platform.contains("Windows")) {
            return findRunningWindowsProcess(processName);
        } else if (platform.contains("Linux")) {
            return findRunningLinuxProcess(processName);
        } else {
            throw new RuntimeException("Unknown platform " + platform);
        }
    }
   
    private static boolean findRunningLinuxProcess(String processName) {
        return false;
    }

    //获取所有进程列表
    private static boolean findRunningWindowsProcess(String processName) {
        BufferedReader bufferedReader = null;
        Process proc = null;
        try {
            proc = Runtime.getRuntime().exec("tasklist /FI \"IMAGENAME eq " + processName + "\"");
            bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                if (line.contains(processName)) {
                    return true;
                }
            }
            return false;
        } catch (Exception ex) {
            ex.printStackTrace();
            return false;
        } finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (Exception ex) {
                }
            }
            if (proc != null) {
                try {
                    proc.destroy();
                } catch (Exception ex) {
                }
            }
        }
    }
    
    //选择操作系统
    public static boolean killRunningProcess(String processName){
        String platform = System.getProperty("os.name");
        if(platform.contains("Windows")){
            return killRunningWindowsProcess(processName);
        }else if(platform.contains("Linux")){
            return false;
        }
        throw new RuntimeException("Unkown platform " + platform);
    }
    
    //终止进程
    private static boolean killRunningWindowsProcess(String processName){
        try {
            Runtime.getRuntime().exec("taskkill /IM " + processName);
            System.out.println("kill process successful");
            System.out.println("Process " + processName + " was killed. Mission completed.");
            return true;
        } catch (Exception ex) {
            ex.printStackTrace();
            System.out.println("kill process fail");
            System.out.println("Misson failed.");
            return false;
        }
    }
    
    public static void main(String[] args) {
        if(ProcessHandler.findRunningProcess("javaw.exe")){
            ProcessHandler.killRunningProcess("javaw.exe");
        }
        
    }

}
 
分享到:
评论

相关推荐

    结束已知应用程序名的进程Demo

    "结束已知应用程序名的进程Demo"这个标题暗示了我们要探讨的是如何在操作系统层面终止一个特定的应用程序进程。这样的操作可能在软件开发、系统调试或资源管理等场景中非常常见。 在Windows操作系统中,我们可以...

    Java模仿DOS界面(cmd程序) (Demo)

    这个类允许我们创建并启动新的操作系统进程,包括执行外部可执行文件,如系统命令。以下是一段简单的示例代码,展示了如何使用ProcessBuilder启动一个外部CMD命令: ```java import java.io.BufferedReader; import...

    IPC进程间通讯

    IPC(Inter-Process Communication,进程间通信)是操作系统提供的一种机制,允许不同进程之间交换数据和信息。在多任务系统中,进程间通信是实现协作和同步的关键技术。本篇将深入探讨IPC的基本概念、常见方法以及...

    C++服务器程序demo

    检查一个进程是否正在运行通常涉及使用操作系统提供的API,如在Unix/Linux系统中使用`ps`命令或`pgrep`命令,或者通过读取`/proc`文件系统来查找进程ID。在C++中,可以使用`system()`函数调用这些命令,或者使用`...

    JAVA Process 使用

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

    一键退出demo

    在Java、C#等面向对象语言中,单例模式常用于控制资源的访问,例如网络连接、数据库连接或者像这里的退出应用这样的系统级操作。单例模式的实现通常包括懒汉式和饿汉式两种方式。在这个demo中,可能是采用了懒汉式,...

    多线程Demo

    1. **线程定义**:线程是操作系统分配CPU时间的基本单位,一个进程可以包含多个线程。相比于进程,线程共享同一进程的内存空间,创建和销毁开销小,通信更高效。 2. **并发与并行**:并发是指多个任务在宏观上看...

    线程Demo.zip

    线程优先级可以调整线程的执行顺序,但其效果受操作系统调度策略影响。线程池则可以有效地管理和控制大量并发线程,避免频繁创建和销毁线程带来的开销。生命周期管理包括线程的启动、暂停、恢复、停止和中断等操作,...

    批量读取txt文件导入数据库Demo实例

    - **数据库驱动**:Python有多种数据库接口,如`pymysql`(MySQL),`psycopg2`(PostgreSQL),`sqlite3`(SQLite)等,用于连接不同的数据库系统。 - **SQL语句**:编写SQL插入语句将数据导入数据库,可能需要...

    线程管理demo

    线程是操作系统分配CPU时间片的基本单位,一个进程可以包含一个或多个线程。在单核CPU系统中,多线程可以实现时间片轮转,让程序看起来是同时运行的。而在多核CPU系统中,线程可以真正实现并行执行,提高系统效率。 ...

    性能之多线程-演示Demo

    操作系统负责管理线程的执行顺序,当线程从运行状态变为等待状态,或者两个线程之间切换时,会产生上下文切换。频繁的上下文切换会消耗大量CPU资源,因此合理控制线程数量和优化同步策略对于减少上下文切换至关重要...

    Java线程知识深入解析[定义].pdf

    新兴的操作系统,如 Mac、Windows NT、Windows 95 等,大多采用多线程的概念,把线程视为基本执行单位。线程也是 Java 中的相当重要的组成部分之一。 二、线程的属性 为了正确有效地使用线程,必须理解线程的各个...

    Java线程的详细讲解

    在计算机科学领域,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程(Process)通常包含若干个线程(Thread)。Java作为一种支持多线程的编程语言,为开发者提供...

    Java util concurrent及基本线程原理简介

    在Java中,线程是程序执行的最小单位,而进程则是操作系统分配资源的基本单位。线程相比于进程更加轻量级,因为它不单独占有系统资源,而是共享进程内的资源。线程间的切换成本较低,因此在多核CPU环境下,通过多...

    多线程.rar

    1. **线程定义**:线程是操作系统分配CPU时间的基本单元,一个进程中可以包含一个或多个线程。它们共享进程的内存空间,但拥有各自的栈空间和程序计数器。 2. **线程创建**:在Java中,可以通过继承Thread类或实现...

    多线程介绍.zip

    线程是操作系统调度的基本单位,它共享进程的内存空间,有自己的程序计数器、栈和局部变量。创建新线程比创建新进程更快,因为它们不需要复制整个进程的内存。 2. **线程的优点** - **并发性**:多线程可以在同一...

    安卓 adb命令

    - **解释**: 此命令用于强制终止指定的应用进程。 ##### 10. 查询进程 - **命令**: `adb shell ps | findstr mtt` - **解释**: 此命令用于查询指定应用的进程信息。 ##### 11. 查询活动包名及进程 - **命令**:...

Global site tag (gtag.js) - Google Analytics