在Cocoa / Objective-C中创建监视程序的原因和方法

祝大家周一愉快!

这是我的情况。 任何帮助非常感谢!

我创建了一个可执行文件,安装后可以放在机器的Launch Agents文件夹中。 理论上它应该永久运行,每秒收集一次数据。 它可以在机器处于睡眠状态时停止,但在重新启动计算机时重新启动。

这是我的问题: 有时程序会自动停止 ,通常是在运行几天之后。 如果重新启动计算机,程序将重新启动并再次运行一段时间,然后才会出现同样的问题。

我不知道这个问题的原因,但朋友告诉我,我可以创建一个“看门狗”,每分钟检查我的可执行文件是否正在运行。 如果不是,则监视程序将重新启动可执行文件。

有关如何做到这一点的任何指示? 我的应用程序是用Objective-C和Cocoa编写的,可以在Mac上运行。

非常感谢!


编辑1

我将尽我所能解释该应用程序是如何工作的。 它基本上是用C和Objective C编写的方法的集合,每秒查询有关系统的信息:

  • -bytes传输
  • – 键盘活动 –
  • – 小鼠活动 –
  • – 硬盘的百分比用完了
  • – 具有键盘焦点的进程

…等等。

它使用Apple Developer网站提供的低级API来完成此操作。 它每秒将信息写入文件。 每小时压缩文件并创建一个新文件。

请询问是否需要更多说明:)


编辑2

对于那些想知道的人,这里是plist文件

    Label com.Intel OnDemand  ProgramArguments  /Library/LaunchAgents/Contents/Intel  RunAtLoad    

再次感谢….


您可以使用launchd作为监视程序。 只需将以下键值对添加到launchd plist文件中:

  KeepAlive  

这将确保您的进程在崩溃或以其他方式终止时重新启动。 (但是,如果你的进程挂起,它将无济于事。)有关KeepAlive和其他launchd键的完整文档,请在Terminal中运行“man launchd.plist”。