Демон Mac OS X с использованием Objective-C - launchd
Я новичок в мире Mac OS X, но у меня есть навыки работы с Windows dev.
Мне нужно разработать демон (в Windows будет Windows Service), который загружает / загружает файлы из веб-службы.
Мой вопрос: возможно ли создать приложение, написанное на Objective-C, которое будет демоном (для загрузки / выгрузки), и запустить его, когда ОС начнет использовать launchd? Или есть другой способ создания демона?
Спасибо
2 ответа
Я не знаю, правильно ли я понял, но думаю, вы можете это сделать. Следующая ссылка может послужить хорошим началом для понимания того, как работают демоны в Objective-C Apple Developer. Тогда здесь есть интересный фрагмент кода. Это о GPS, но это может быть полезно. Также взгляните на эту папку github. Это контроллер для запуска / остановки демонов
В 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.