在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”。