运行在 CMD 中的 Java 程序,在 Ctrl+C 强制终止后,如何对该 Java 程序另外启动的程序也进行强制终止?

2016-10-25 12:01:51 +08:00
 XhstormR

https://github.com/XhstormR/GetBilibili

上面的是我写的一个程序,会在后台调用 FFmpeg 。

有时我强制终止了 Java 程序,但发现后台的 FFmpeg 还在进行合并。

下面的是我写的一个示例代码:

public class A {
    public static void main(String[] args) throws IOException {
        Process process = new ProcessBuilder().command("notepad.exe").start();
        while (true) {
            System.out.println("123");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

想实现在 Ctrl+C 后,记事本也能自动退出,有办法实现吗?谢谢各位了。

5052 次点击
所在节点    Java
4 条回复
hcymk2
2016-10-25 12:17:39 +08:00
SoloCompany
2016-10-25 14:54:11 +08:00
这个锅应该 Windows 背吧
如果你在 *inx 下运行的话结果不会是这样的
默认情况下父进程退出,子进程也会退出,除非你使用 nohup 来启动
当然也有可能子进程不接受 sign quit 信号没有退出成功(你的例子 ffmpeg 有可能是这种情况),但子进程不退出的话父进程应该也是退出不了的
winterbells
2016-10-25 14:57:13 +08:00
taskkill /f /t /im java*
q397064399
2016-11-02 18:49:26 +08:00
windows 的锅

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/315278

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX