如何使用Xcode在Mac上编写"系统进程"(启动过程)?

bug*_*ixr 3 xcode cocoa objective-c

我需要编写一个将在后台运行的应用程序或作为Mac上的系统进程.它需要在启动时运行,即使没有用户登录也需要运行.

我有Xcode 3.2.6(在这里使用Xcode 4不是我的选择) - 我应该使用哪种类型的项目?当我准备好部署它时,如何"安装"它以便在计算机启动时自动启动?

编辑

我最大的问题是使用什么类型的项目.我需要一个能够保持运行的进程,它将监视服务器并每隔几分钟发送一次更新的信息.

我最初为此创建了一个命令行工具.主线程运行并立即存在,所以我将它放在一个无限循环中,它会休眠线程并通过NSTimer执行任何所需的处理.这是错误的方法吗?还有更好的吗?这就是我所追求的.

Rob*_*ier 9

您所描述的内容在Mac上称为守护进程.您想阅读" 守护进程和服务编程指南"以获取有关如何构建它们的说明.

最常见的形式是launchd在" 启动守护程序和代理"文档中描述的启动守护程序.这些适用于Mac OS X 10.4及更高版本.

在10.4之前,有"启动项目".除非您需要在10.4之前的系统上运行,否则请勿使用它们.

技术说明TN2083(守护进程和代理商)是另一个值得阅读的文件.

编辑

是的,命令行模板是最好的起点.

大多数守护进程应该"按需".这意味着当发生"有趣的事情"时,他们应该让launchd运行它们,然后他们应该继续运行以处理其他事件,最后他们应该让launchd在没有事件进入一段时间时杀死它们.什么"有趣的事件"看起来取决于你的问题.常见事件是套接字上的流量,文件更改或队列目录中存在的文件.Launchd可以处理任何这种情况下的自动运行.