2

您好我正在尝试使用objective-C/xcode 开发一个守护进程。

我是 mac 世界的新手,我可以了解在 xcode 中选择什么项目模板以及如何操作。

我可以获得一个简单而基本的守护进程示例源代码吗?

4

1 回答 1

4

“命令行工具”项目足以开始编写守护程序。没有特殊的构建要求,它只取决于您希望守护程序做什么。

编写 Mac OS X 守护程序的方式非常类似于在常规 Unix 系统上使用它的方式。因此,有几点需要牢记:

  • non-interactive:您不会从用户那里获得直接输入,但您还必须使用类似syslogd输出的东西,因为该进程未附加到终端
  • environment:不要假设它具有特定的当前目录、路径、默认权限或任何其他环境设置 - 明确设置这些
  • 安全性:确保守护程序具有执行其功能所需的最低权限,仅此而已(这本身就是一个巨大的话题)
  • 信号:您需要捕获并响应某些信号,因为这些信号通常用于进程控制(例如,SIGHUP强制守护进程重新加载其配置文件)

如果你去看的话,有一些关于 Unix 守护进程的好文章。Stephens 关于 Unix 的书也总是很好。

有一些关于守护进程的 Mac 特定信息需要考虑,主要是关于与launchd.

一个典型的守护进程会做如下的事情:

  • 双叉,与父进程分离
  • 设置进程组和有效UID
  • 安装信号处理程序
  • 设置文件权限 umask
  • 将目录更改为工作目录
  • 读取配置文件
  • 打开套接字等
  • 进入无限循环服务请求

Wikipedia 文章中也有一个简单的守护进程示例

于 2009-10-07T11:18:10.977 回答