Демон 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-слой]. Или, точнее, нет инфраструктуры, которая их запускает.
Для получения дополнительной информации см. Руководство по разработке демонов и сервисов.