我需要一种方法来确定Cocoa应用程序是否正在运行给定的进程名称。我的一个想法是使用NSTask并使用ps aux |进行轮询grep processName。有更好的解决方案吗?
答案 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获取进程的名称。请注意,此技术无法解决启动进程时的观察问题。