java - 如果我知道该进程的 PID,如何从 Java 应用程序中终止该进程?我正在寻找一个跨平台的解决方案
问题描述
我知道有几种方法可以从 Java 中终止进程,但所有这些方法都使用某种特定于平台的代码,这些代码只能在 Windows 或 Linux 上运行。
有没有我可以使用的库,我可以调用类似的东西
Process.kill(pid);
或者也许我可以编写一种方法来处理(几乎)所有操作系统情况?
我想做的就是终止一个进程,知道它已经是 PID。
解决方案
由于 Java 9ProcessHandle
允许与系统上的所有进程进行交互(当然受系统权限的限制)。
具体来说ProcessHandle.of(knownPid)
,将返回ProcessHandle
给定 PID 的 (从技术上讲Optional
,如果没有找到进程,它可能是空的)并且destroy
或destroyForcibly
将尝试终止该进程。
IE
long pid = getThePidViaSomeWay();
Optional<ProcessHandle> maybePh = ProcessHandle.of(pid);
ProcessHandle ph = maybePh.orElseThrow(); // replace with your preferred way to handle no process being found.
ph.destroy(); //or
ph.destroyForcibly(); // if you want to be more "forcible" about it
推荐阅读
- dependency-injection - 如何使用 Umbraco.Core.Composing (Umbraco 8) 按类型获取注入依赖项的实例
- awk - 如何在文件内容的输出中创建表?
- linux - 合并两个列文件,但将第二个文件的列插入第一个文件的列
- javascript - 如何使用导航链接与路由器和引导样式做出反应
- php - 如何使用下拉列表选择数据库上的表?
- java - 无法创建配置,因为找不到 Bean 验证提供程序 - Vaadin 14 Spring Boot
- java - Akka 两个在同一类中的 receiveBuilder
- terminal - 从终端打开特定的 jupyter notebook
- java - 使用 Spring boot 和 Angular 进行部署我需要同时使用 app Server (Tomcat) 吗?
- azure-functions - 使用 PowerShell 在免费应用服务计划中创建函数