objective-c - 开发一个在用户使用 xcode 登录之前运行的 osx 守护进程

标签 objective-c xcode macos daemon

您好,我正在尝试使用 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/

相关文章:

swift - 我正在尝试设置 coreMotion,但我的加速处理程序中出现此错误?

c++ - 尝试在终端(MacOSX)中编译两个.cpp文件(来自XCode)时的“Duplicate symbol”

iphone - iPhone 上路由实现的标准/最佳方式是什么?

iphone - XCode 4.2 和 SDK 4.3 有自定义按钮字体问题吗?

c++ - 使用 Xcode 构建多平台 C++ 库的简便方法

ios - 使用 libusbmuxd 在 Mac 和 iPhone 之间读/写

windows - 连接到剪贴板?

ios - Xcode/Objective C - 动态导入文件(通过文件夹、正则表达式等)

ios - UITableViewCell-仅第一个单元格没有节头

swiftui - 如何避免 'Unable to simultaneously satisfy constraints' 错误?