Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java程序B终止java程序a_Java_Process_Kill Process - Fatal编程技术网

用java程序B终止java程序a

用java程序B终止java程序a,java,process,kill-process,Java,Process,Kill Process,我想停止在Windows中使用命令提示符启动的Java程序 如何使用其他正在运行的Java程序将其关闭?如果要终止或停止程序,只需键入即可 系统退出(0) 尽管系统退出(1)将指示出现了“非零”退出代码,这通常意味着发生了错误。如果退出并且一切正常,则用户0。使用非零(如1)表示有错误(如不存在的文件或其他) 如果要从另一个java程序停止java程序,首先必须获取java程序的进程id。一旦知道这个进程ID,就可以通过系统调用终止它(就像在终端中一样) 例如,如果我让这个Java程序不确定地运

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


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

如果要终止或停止程序,只需键入即可

系统退出(0)

尽管
系统退出(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命令或
运行的.exec
必须捕获异常的节点,因为它被抛出。它必须位于try-catch块中,否则将无法编译


希望这能有所帮助。

你想让它自己停止还是让另一个java程序停止?@Laurel当然是指另一个java程序。我写了“这应该是一个java程序,而不是手动的。”之前我问过并回答过。谢谢@Jeff W,但是这个回答没有说明如何获得另一个进程的PID。我使用“jps”来获取所有正在运行的java进程。谢谢。但我的问题是我有一个java程序,假设a正在运行,我想用另一个java程序B杀死该程序。检查我的新编辑。让我知道这是否对您有效。在windows中,您需要在windows shell上使用
Taskkill
,而不是
kill
:非常感谢。我现在的问题是如何获得该程序的PID。我知道JRE中包含的JP显示了运行中的java进程及其PID。但是我不知道如何在程序内调用它?我可以用exec调用它并获取它的inputstream吗?是的,我检查是Linux还是windows在Linux中运行kill,还是在windows中运行taskkill。