objective-c - 观察一个PID未知的进程(无UI)

标签 objective-c c cocoa macos-carbon

我找到了 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/

相关文章:

android - 在云上的iOS和Android之间共享本地化

objective-c - CGaffine 在 UIView 上进行变换而不变换 subview

c - 为什么C语言的设计者要这样打等价?

c - 寻找线程同步性能问题的解释

cocoa - 有序终止ResourceLoadDelegate中当前的NSURLRequest

cocoa - 求和 UIView subview 属性的 KVC 路径是什么?

iphone - 如何从缓冲区而不是音频文件中获取耳机插孔音频?

iphone - 服务器到客户端的消息传递能否依赖 APNS?

java - Scala 中的方法执行难题

iphone - 处理 NSNumber 时,NSMutableDictionary 根据对象的地址或值进行查找?