【发布时间】:2016-12-20 11:43:38
【问题描述】:
在 macOS 上的 Java 应用程序中,我使用 Runtime.getRuntime().exec("open -Wn filename") 使用其默认应用程序启动文件,我们将其称为查看应用程序(例如 AdobeReader for pdf)。这很好用。
当我想关闭查看应用程序(例如 AdobeReader)时,出现了我的问题。
问题是,open 命令本身是作为 java 应用程序的子进程启动的,但是 open 命令不是作为子进程启动查看应用程序,而是作为 launchd(1) 的子进程启动的。结果,当我从Java应用程序中销毁进程时,只有打开的进程被杀死,而不是查看应用程序。
到目前为止,我无法获得查看应用程序进程的 PID 以将其杀死。使用ps,我只能找到它,当我有应用程序名称时,但这正是我没有的,因为我想让操作系统决定查看应用程序。
有人知道我该怎么做吗
- 获取从
open命令启动的应用程序的pid,不知道应用程序名称或UTI(记住,open不是查看应用程序的父进程)?
或
- 使启动的应用程序成为
open进程的子进程,这样我就可以通过杀死open进程来杀死它?
或
- 还有其他可能的解决方案吗?
非常感谢您的想法。
【问题讨论】:
标签: macos command-line java process