разработка osx deamon, которая запускается до входа пользователя с использованием xcode - PullRequest
2 голосов
/ 07 октября 2009

Привет, я пытаюсь разработать демон, используя target-C / xcode.

Я новичок в мире Mac и могу ли я получить представление о том, какой шаблон проекта выбрать в xcode и как это сделать.

Могу ли я получить простой и простой пример исходного кода демона?

1 Ответ

4 голосов
/ 07 октября 2009

Проект «Инструмент командной строки» достаточен, чтобы начать писать демон. Как таковых особых требований к сборке нет, это зависит только от того, что вы хотите, чтобы демон делал.

Способ написания демона Mac OS X очень похож на то, как вы подходите к нему в обычной системе Unix. Соответственно, есть несколько вещей, которые нужно иметь в виду:

  • неинтерактив : вы не получаете прямой ввод от пользователя, но вы также должны использовать что-то вроде syslogd для вывода, так как процесс не привязан к терминалу
  • environment : не предполагайте, что у него есть определенный текущий каталог, путь, разрешения по умолчанию или любые другие параметры среды - явно установите их
  • security : убедитесь, что у демона есть минимальные привилегии, необходимые для выполнения его функций, и не более (это огромная тема сама по себе)
  • сигналов : вам нужно будет отлавливать и реагировать на определенные сигналы, так как они обычно используются для управления процессом (например, SIGHUP заставляет демона перезагружать свой файл конфигурации)

Есть несколько хороших записей для демонов Unix , если вы посмотрите. Книга Стивенса по Unix тоже всегда хороша.

Существует некоторая информация о Mac для демонов , которую необходимо учитывать, в основном касательно интеграции с launchd.

Типичный демон будет делать что-то вроде следующего:

  • двойная вилка, для отделения от родительского процесса
  • настроить группу процессов и эффективный UID
  • установить обработчики сигналов
  • установить права доступа к файлу umask
  • изменить каталог на рабочий каталог
  • читать конфигурационный файл
  • открытые розетки и т. Д.
  • войти в бесконечный цикл для запросов на обслуживание

В статье Википедии есть простой пример демона .

...