检测其他进程何时关闭OSX

时间:2010-03-07 02:10:28

标签: macos cocoa process process-management

我需要一种方法来确定Cocoa应用程序是否正在运行给定的进程名称。我的一个想法是使用NSTask并使用ps aux |进行轮询grep processName。有更好的解决方案吗?

5 个答案:

答案 0 :(得分:1)

您应该能够轻松调整此示例代码以按名称查找流程:

http://developer.apple.com/mac/library/samplecode/PIDFromBSDProcessName/listing1.html

答案 1 :(得分:1)

如果您使用Snow Leopard,可以查看NSRunningApplication课程,尤其是+ runningApplicationWithProcessIdentifier:方法

答案 2 :(得分:0)

我已经成功地使用了GetBSDProcessList() function几次。

答案 3 :(得分:0)

如果您需要检查进程是否正在运行一段时间(而不是在一瞬间),请查看Tech Note 2050: Observing Process Lifetimes Without Polling。技术说明中的一些技术有limitations:它们只允许您监视当前登录会话中的GUI进程。但是,kqueues可能正是您所需要的:它们可让您监控任何类型的流程。

答案 4 :(得分:0)

您可以使用Process Manager API通过GetNextProcess遍历所有正在运行的进程,并使用CopyProcessName获取进程的名称。请注意,此技术无法解决启动进程时的观察问题。