Демон 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.

Другие вопросы по тегам