Как написать «Системный процесс» (процесс запуска) на Mac с помощью Xcode? - PullRequest
3 голосов
/ 09 сентября 2011

Мне нужно написать приложение, которое будет работать в фоновом режиме или как системный процесс на Mac.Он должен запускаться при запуске и должен запускаться, даже если ни один пользователь не вошел в систему.

У меня есть Xcode 3.2.6 (использование Xcode 4 для меня здесь не вариант) - какой тип проектая должен использовать для этого?Когда я буду готов развернуть его, как мне его «установить», чтобы он автоматически запускался при загрузке компьютера?

РЕДАКТИРОВАТЬ

MyСамый большой вопрос, какой тип проекта использовать.Мне нужен процесс, который будет продолжать работать и который будет контролировать сервер и отправлять ему обновленную информацию каждые несколько минут.

Я изначально создал инструмент командной строки для этого.Основной поток запускается и сразу же существует, поэтому у меня есть его в бесконечном цикле, который спит поток и выполняет любую обработку, требуемую с помощью NSTimer.Это неправильный подход?Есть ли лучше?Вот чего я хочу.

1 Ответ

9 голосов
/ 09 сентября 2011

То, что вы описываете, называется Daemon на Mac.Вы хотите прочитать Руководство по программированию демонов и сервисов для получения инструкций по их созданию.

Самая распространенная форма - это Launch Daemon, работающий под launchd, описанный в Запуск демонов и агентов документы.Они подходят для Mac OS X 10.4 и более поздних версий.

До 10.4 существовали «элементы запуска».Не используйте их, если вам не нужно работать в системах до 10.4.

Техническое примечание TN2083 (Демоны и агенты) - еще один документ, который стоит прочитать.

РЕДАКТИРОВАТЬ

Да, шаблон командной строки является лучшей отправной точкой.

Большинство демонов должны быть «по требованию».Это означает, что они должны позволить launchd запускать их, когда происходит «что-то интересное», затем они должны продолжать работать для обработки дополнительных событий, и, наконец, они должны позволить launchd убивать их, когда в течение некоторого времени не происходит никаких событий.Как выглядят «интересные события», зависит от вашей проблемы.Общие события - это трафик в сокете, изменения в файле или файлы, существующие в каталоге очереди.Launchd может автоматически запустить вас в любом из этих случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...