我找到了 this问题,但即使接近我所需要的,也是无用的
基本上,我有一个应用程序需要在另一个进程(已知名称)启动和/或终止时执行某些操作,但我没有 PID,所以我无法设置 kqueue 来查找它.
我可以为“ps aux | grep processtolook | grep -v grep”命令做一段时间,但这是我最后的选择。
有什么想法吗?
最佳答案
看看这个答案:Determine Process Info Programmatically in Darwin/OSX . libproc.h 头文件包含 proc_listpids
,它将为您提供所有 pids。然后,您可以循环获取 pid 信息并使用 proc_pidinfo
并检查名称。按照建议查看顶级资源也可能是值得的。 (当前版本在这里http://www.opensource.apple.com/source/top/top-67/。)
不幸的是,这是一个未记录的接口(interface),随时可能更改。此外,这不是最快的事情,因为您必须遍历系统中的所有进程。通常,这不是执行此操作的好方法。
更好的方法可能是编写一个新的进程外观,它只调用旧的进程外观,您可以移动或重命名它。然后它可以通知您进程的启动和停止。有这种可能吗?
关于objective-c - 观察一个PID未知的进程(无UI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045878/