使用java程序B终止java程序A.

时间:2016-05-12 16:32:15

标签: java process kill-process

我想停止在Windows中使用命令提示符启动的Java程序。

如何使用其他正在运行的Java程序关闭它?

1 个答案:

答案 0 :(得分:1)

如果您想编程终止或停止,只需输入

即可

System.exit(0);

虽然System.exit(1);表示发生了“非零”退出代码,这通常意味着发生了错误。用户0如果退出并且一切正常。使用非零(如1)表示存在错误(如不存在的文件或其他内容)。

如果要从另一个java程序中停止java程序,首先必须获取java程序的进程ID。一旦知道了这个进程ID,就可以通过系统调用将其终止(就像在终端中一样)。

例如,如果我让这个Java程序无限期地运行:

import java.lang.management.ManagementFactory;
public class Test {
    public static void main(String[] args) {
        System.out.println("Hello, World");
        System.out.println(ManagementFactory.getRuntimeMXBean().getName());
        while (true) {
                int i = 0;
        }   
    }   
}

我可以看到它的进程ID(例如123)并使用以下命令将其终止。

$ kill 123 

一旦完成,你必须找到一些方法让它在请求之后将这些数据输出到另一个java程序。然后,一旦知道了进程ID,就可以管理系统调用或shell exec。

import java.lang.* ;

public class Shell 
{
        public static void main(String[] args)
        {   
                try { 
                        String cmd = "kill 123";
                        Runtime run = Runtime.getRuntime();
                        Process pr = run.exec(cmd) ;
                } catch (Exception ex) {
                        System.out.println("SOMETHING WENT WRONG");
                }   
        }   
}

所有shell命令或run.exec必须捕获异常的节点,因为它被抛出。它必须在try catch块中,否则将无法编译。

希望这有帮助。