每当在 MAC 中创建新进程时,我都会尝试检测/获得通知。最简单的方法是轮询所有进程并查看是否已启动新进程,但这太耗时了,我想知道每当使用“forked”和“execve”启动新进程时我是否能以某种方式获得一些通知. 这是我已经发现的:
关于如何在 MAC 中启动新进程:
OS X 是 Unix 的变种。使用 fork() 系统调用创建新进程。这将创建一个几乎相同的调用进程副本(不同之处在于 fork 在子进程中返回 0,而在父进程中返回子进程的 pid)。然后在子进程中使用其中一个 exec() 系统调用将子进程转换为运行不同可执行文件的进程是正常的。 新应用程序如何在 Mac 上启动?
关于通过轮询获取所有进程的列表
http://www.cocoabuilder.com/archive/cocoa/92971-bsd-processes-with-code.html
我也经历过 kAuth kext 的事情,但它似乎超出了我的水平,除非我有一些简单的示例代码,以便我可以理解如何生成 kext 并在示例应用程序中使用它。 https://developer.apple.com/library/mac/technotes/tn2127/_index.html
NSWorkspace 有一个通知器,但这仅适用于应用程序而不适用于所有进程。
任何对如何解决这个问题有一些基本了解的教程/示例代码,将不胜感激。