I need a way to determine from a Cocoa app if a given process name is running. One idea I had was to use NSTask and poll using ps aux | grep processName. Is there a better solution?
问问题
390 次
5 回答
1
You should be able to easily adapt this sample code to look for a process by name:
http://developer.apple.com/mac/library/samplecode/PIDFromBSDProcessName/listing1.html
于 2010-03-07T02:29:37.380 回答
1
如果您使用的是 Snow Leopard,则可以查看NSRunningApplication类,尤其是+ runningApplicationWithProcessIdentifier:方法
于 2010-03-07T10:51:27.490 回答
0
如果您需要检查进程是否运行了一段时间(而不是瞬间),请查看技术说明 2050:在没有轮询的情况下观察进程生命周期。技术说明中的一些技术有局限性:它们只允许您监控当前登录会话中的 GUI 进程。然而, kqueues可能正是您正在寻找的:它们让您可以监控任何类型的进程。
于 2010-03-07T04:44:24.597 回答
0
我已经多次成功地使用了该GetBSDProcessList()
功能。
于 2010-03-07T02:48:22.600 回答
0
您可以使用Process Manager API 通过GetNextProcess循环遍历所有正在运行的进程,并使用CopyProcessName来获取进程的名称。请注意,此技术不能解决观察进程何时启动的问题。
于 2010-03-07T08:14:31.653 回答