Демон Mac OS X, использующий Objective-C — launchd

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

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

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

Спасибо


person avmauricio    schedule 08.05.2012    source источник


Ответы (2)


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

person spaghettifunk    schedule 09.05.2012
comment
Спасибо, это то, что я ищу. - person avmauricio; 10.05.2012

В 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]. Или, точнее, нет той инфраструктуры, которая их запускает.

Дополнительные сведения см. в Руководстве по программированию демонов и служб. .

person febeling    schedule 09.05.2012
comment
Акцент: может быть написано на любом языке. Не следует использовать Obj-C для LaunchDaemon или LaunchAgent системного уровня из-за взломов InputManager! - person Richard; 09.05.2012