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

Objective c 开发在用户使用xcode登录之前运行的osx deamon,objective-c,xcode,macos,daemon,Objective C,Xcode,Macos,Daemon,您好,我正在尝试使用objective-C/xcode开发一个守护程序 我是mac world的新手,我能知道在xcode中选择什么样的项目模板以及如何做吗 我可以得到一个简单而基本的守护程序示例源代码吗 “命令行工具”项目足以开始编写守护程序。没有特殊的构建需求,这取决于您希望守护进程做什么 编写MacOSX守护进程的方式与在常规Unix系统上处理它的方式非常相似。因此,有几件事需要记住: 非交互式:用户不能直接输入,但您还必须使用类似于syslogd的方法进行输出,因为该过程没有连接到终端

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

我是mac world的新手,我能知道在xcode中选择什么样的项目模板以及如何做吗

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

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

编写MacOSX守护进程的方式与在常规Unix系统上处理它的方式非常相似。因此,有几件事需要记住:

  • 非交互式:用户不能直接输入,但您还必须使用类似于
    syslogd
    的方法进行输出,因为该过程没有连接到终端
  • 环境:不要假设它具有特定的当前目录、路径、默认权限或任何其他环境设置-明确设置这些设置
  • 安全性:确保守护进程拥有执行其功能所需的最低权限,而不是更多权限(这本身就是一个巨大的主题)
  • 信号:您需要捕获并响应某些信号,因为这些信号通常用于进程控制(例如,
    SIGHUP
    强制守护进程重新加载其配置文件)
如果你去看的话,还有一些。斯蒂芬斯关于Unix的书也总是很好的

有一些要考虑的,主要是关于与<代码> 典型的守护进程将执行以下操作:

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

Wikipedia的文章中也有一个。为了澄清,这将是一个
启动守护程序
,而不是
启动代理
LaunchDaemon
s以root用户身份运行(登录前需要运行),而
LaunchAgent
s以用户身份运行。