Демон Mac OS X с использованием Objective-C - launchd

Я новичок в мире Mac OS X, но у меня есть навыки в Windows dev.

Мне нужно разработать демон (в Windows будет Windows Service), который загружает/загружает файлы из веб-службы.

Мой вопрос: можно создать приложение, написанное в Objective-C, которое будет демоном (для загрузки/загрузки) и запустить его, когда ОС начнет использовать launchd? Или существует другой способ создания демона?

Спасибо

Ответ 1

Я не знаю, правильно ли я понял, но думаю, вы можете это сделать. Следующая ссылка может быть хорошим началом для понимания того, как работают демоны в Objective-C Apple Developer Тогда здесь есть интересный фрагмент кода. Это касается GPS, но это может быть полезно. Также посмотрите эту папку github. Это контроллер для запуска/остановки демонов

Ответ 2

В 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 или С++.

И нет, нет другого (рекомендуемого) способа сделать это на Mac. init.d -строчные скрипты не работают на Mac [или на Darwin, это UNIX-слой]. Или, точнее, нет инфраструктуры, которая их запускает.

Для получения дополнительной информации см. Руководство по разработке демонов и сервисов.