您好,我正在尝试使用 Objective-C/xcode 开发一个守护进程。
我是 mac 世界的新手,我可以了解一下在 xcode 中选择什么项目模板以及如何操作吗?
我可以获得简单且基本的守护程序示例源代码吗?
最佳答案
“命令行工具”项目足以开始编写守护程序。没有特殊的构建要求,它只取决于您希望守护进程执行的操作。
编写 Mac OS X 守护程序的方法与在常规 Unix 系统上编写它的方法非常相似。因此,有以下几点需要牢记:
- 非交互式:您无法从用户那里获得直接输入,但您还必须使用
syslogd
之类的内容进行输出,因为进程未附加到终端 - 环境:不要假设它具有特定的当前目录、路径、默认权限或任何其他环境设置 - 明确设置这些
- 安全性:确保守护进程拥有执行其功能所需的最低权限,仅此而已(这本身就是一个很大的主题)
- 信号:您需要捕获并响应某些信号,因为这些信号通常用于进程控制(例如,
SIGHUP
强制守护进程重新加载其配置文件)
有一些good writeup on Unix daemons如果你去寻找。 Stephens 关于 Unix 的书也总是很好。
有一些Mac specific information on daemons需要考虑,主要是与 launchd
集成。
典型的守护进程会执行如下操作:
- 双 fork ,与父进程分离
- 设置进程组和有效UID
- 安装信号处理程序
- 设置文件权限umask
- 将目录更改为工作目录
- 读取配置文件
- 打开套接字等
- 进入无限循环来服务请求
有一个simple daemon example维基百科文章中也有。
关于objective-c - 开发一个在用户使用 xcode 登录之前运行的 osx 守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1530785/