如何获取 Mac 上所有正在运行的进程的列表?
最好能得到:
- 每个进程的进程 ID
- 进程使用了多少 CPU 时间
,我们可以在 C 或 Objective C 中为 Mac 执行此操作吗?一些示例代码会很棒!
It would all be good to get:
- The process ID of each one
- How much CPU time gets used by the process
and can we do this for Mac in C or Objective C? Some example code would be awesome!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
通常的方法是进入 C 并枚举系统上的进程序列号(回溯到 Mac OS X 之前的时代)。 NSWorkspace 有 API,但它们并不总是按照您期望的方式工作。
请注意,经典进程(在 PowerPC 系统上)将使用此代码进行枚举(具有不同的进程序列号),即使它们都共享一个进程 ID。
然后,您可以调用该函数并传递一个块,该块将根据 PID 执行您想要的操作。
使用 NSRunningApplication 和 NSWorkspace:
The usual way to do it is to drop into C and enumerate through the process serial numbers on the system (a throwback to pre-Mac OS X days.) NSWorkspace has APIs but they don't always work the way you expect.
Note that Classic processes (on PowerPC systems) will be enumerated with this code (having distinct process serial numbers), even though they all share a single process ID.
You can then call that function and pass a block that will do what you want with the PIDs.
Using
NSRunningApplication
andNSWorkspace
:您可以使用 BSD sysctl 例程或 ps 命令来获取所有 BSD 进程的列表。请查看 https://stackoverflow.com/ a/18821357/944634
You can use BSD sysctl routine or ps command to get a list of all BSD processes.Have a look at https://stackoverflow.com/a/18821357/944634
嘿,您可以执行系统调用:
并解析结果。
您可以使用 C 中的
system()
进行此调用。Hey, you can do a system call as :
and parse the results.
You can make this call using
system()
in C.