【问题标题】:Mac OS X daemon using Objective-C - launchd使用 Objective-C 的 Mac OS X 守护进程 - launchd
【发布时间】:2012-05-17 11:22:09
【问题描述】:

我是 Mac OS X 领域的新手,但我有 Windows 开发技能。

我需要开发一个从 Web 服务上传/下载文件的守护程序(在 Windows 上将是 Windows 服务)。

我的问题是:是否可以创建一个用 Objective-C 编写的应用程序作为守护进程(上传/下载)并在操作系统开始使用 launchd 时启动它?或者还有另一种创建守护进程的方法?

谢谢

【问题讨论】:

    标签: objective-c macos launchd launch-daemon


    【解决方案1】:

    在 OS X 上,这些服务称为 LaunchDaemon(系统范围)和 LaunchAgent(用户特定)。您创建一个配置,告诉系统何时启动、运行哪个可执行文件、如何处理 stdin、stdout 和 stderr,传递哪些参数等等。看看这些手册页:

    launchd(8)       # the service controlling other services
    launchctl(1)     # the command to control services
    launchd.plist(5) # the configuration format for services
    

    守护程序可以用任何在 OS X 上运行的语言编写。因此,Objective-C 是 Mac 平台的典型选择,但从 Ruby、Python 和 Perl 到 AppleScript 到纯 C 或 C++ 的任何其他语言都可以。

    不,没有其他(推荐的)方法可以在 Mac 上执行此操作。 init.d 风格的脚本在 Mac 上不起作用 [或者在 Darwin 上,它是 UNIX 层]。或者,更准确地说,没有运行它们的基础设施。

    有关更多信息,请参阅Daemons and Services Programming Guide

    【讨论】:

    • 强调:可以用任何语言编写。由于 InputManager 黑客攻击,不应将 Obj-C 用于 LaunchDaemon 或系统级 LaunchAgent!
    【解决方案2】:

    我不知道我是否理解正确,但我想你可以做到。下一个链接可能是了解守护进程如何在 Objective-C 中工作的良好开端 Apple Developer 然后这里有一段有趣的代码。 It is about GPS but it might be usefull。也可以看看这个 github 文件夹。It is a controller for start/stop daemons

    【讨论】:

    • 谢谢,这正是我正在寻找的东西。
    猜你喜欢
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2013-06-14
    • 2012-08-12
    • 2013-05-24
    • 1970-01-01
    相关资源
    最近更新 更多