开发一个在用户使用xcode登录之前运行的osx deamon

时间:2009-10-07 10:31:49

标签: objective-c xcode macos daemon

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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

如果你去寻找,有一些good writeup on Unix daemons。关于Unix的Stephens书也总是很好。

需要考虑一些Mac specific information on daemons,主要是与launchd进行整合。

典型的守护进程将执行以下操作:

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

维基百科文章中也有simple daemon example