从macOS上的Java应用程序中,我使用Runtime.getRuntime().exec("open -Wn filename")
启动带有Default应用程序的文件,我们称之为Viewing应用程序(例如AdobeReader for pdf)。这工作正常。从macOS上的open命令启动的应用程序进程获取pid
当我想关闭查看应用程序(例如AdobeReader)时,出现了我的问题。
问题是,open
命令本身作为java应用程序的子进程启动,但open命令启动的查看应用程序不是作为子进程运行,而是作为子进程的launchd(1)
。因此,当我从Java应用程序销毁进程时,只有打开的进程被终止,而不是查看应用程序。
到目前为止,我无法设法让查看应用程序进程的PID能够杀死它。有了ps
我只能找到它,当我有应用程序名称,但这正是我没有的,因为我想让操作系统决定有关查看应用程序。
没有任何人有一个想法,我怎么会
- 获取从
open
命令启动的应用程序的PID,不知道应用程序名称或尿路感染(记得,open
不是的父进程查看应用程序)?
或
- 使启动程序的
open
过程的孩子,这样我就可以通过杀死open
过程中杀死它?
或
- 任何其他可能的解决方案?
您的想法非常感谢。