运行进程在OSX,找到发起进程

Running processes in OS X, Find the initiator process

我想创建一个守护程序(基于脚本或一些较低级别的语言),根据它们的启动过程计算所有打开的应用程序的统计信息。问题是启动进程并不总是等同于实际的父进程。

例如,当我按下 Microsoft Word 中的超链接时,它应该打开可执行文件,如 file:///Applications/Chess.app/

在上面的例子中,我观察到 'Chess' 的 ppid 实际上是 'launchd',就像我从启动板 运行 它一样。

也许有 mach_port(或任何其他)api 来确定是谁真正发起了申请?

你不能。 Mac OS X 不会以您正在寻找的方式跟踪此信息 -- 从另一个应用程序打开一个应用程序不会在这些应用程序之间建立任何类型的关系。