如何使用Objective-C获得运行过程

时间:2011-08-29 17:18:15

标签: objective-c multithreading cocoa operating-system macos

我必须开发一个监控特定进程的Cocoa程序。如果该过程低于CPU使用率的50%,我必须向管理员发送电子邮件。当然,这将是Mac OS X应用程序。

有人给我提示或示例吗?我在网上搜索,但没有找到任何东西。

2 个答案:

答案 0 :(得分:3)

你所问的实际上并不简单。

正如CajunLuke所说,你会想要利用系统的POSIX基础。

但问题是,您需要在某个时间窗口内取平均CPU使用率,并对多个样本中的平均值进行平均,否则可能会丢弃超出某些标准偏差的样本。

问题是CPU使用样本必然是一段时间内的平均值,如果那段时间非常短,那么偶尔会看到样本非常低(或高)。

从开源存储库获取top命令的源代码(我相信top将在Darwin OSS版本中)并查看它。

答案 1 :(得分:1)

由于Objective-C是C的超集,因此您可以使用在Linux或其他UNIX上使用的任何标准POSIX C方法。

一种方式(不是一种好方法)是呼叫pstop然后处理结果。

如果您有* nix应用程序或脚本已经执行此操作,它应该只在OS X上重新编译。