Проект «Инструмент командной строки» достаточен, чтобы начать писать демон. Как таковых особых требований к сборке нет, это зависит только от того, что вы хотите, чтобы демон делал.
Способ написания демона Mac OS X очень похож на то, как вы подходите к нему в обычной системе Unix. Соответственно, есть несколько вещей, которые нужно иметь в виду:
- неинтерактив : вы не получаете прямой ввод от пользователя, но вы также должны использовать что-то вроде
syslogd
для вывода, так как процесс не привязан к терминалу
- environment : не предполагайте, что у него есть определенный текущий каталог, путь, разрешения по умолчанию или любые другие параметры среды - явно установите их
- security : убедитесь, что у демона есть минимальные привилегии, необходимые для выполнения его функций, и не более (это огромная тема сама по себе)
- сигналов : вам нужно будет отлавливать и реагировать на определенные сигналы, так как они обычно используются для управления процессом (например,
SIGHUP
заставляет демона перезагружать свой файл конфигурации)
Есть несколько хороших записей для демонов Unix , если вы посмотрите. Книга Стивенса по Unix тоже всегда хороша.
Существует некоторая информация о Mac для демонов , которую необходимо учитывать, в основном касательно интеграции с launchd
.
Типичный демон будет делать что-то вроде следующего:
- двойная вилка, для отделения от родительского процесса
- настроить группу процессов и эффективный UID
- установить обработчики сигналов
- установить права доступа к файлу umask
- изменить каталог на рабочий каталог
- читать конфигурационный файл
- открытые розетки и т. Д.
- войти в бесконечный цикл для запросов на обслуживание
В статье Википедии есть простой пример демона .