Почему Демон случайно останавливается? - PullRequest
0 голосов
/ 06 сентября 2010

Это как бы связано с предыдущим, но пока безуспешным моим вопросом . У меня есть демон, который находится в папке LaunchAgents (на Mac) и он должен постоянно работать в фоновом режиме, но через пару дней он просто останавливается без видимой причины. Я понятия не имею, почему и, следовательно, мой вопрос:

По каким причинам демон может случайно остановиться?

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 06 сентября 2010

Демон - это просто длительный (разветвленный) процесс. Причина сбоя Daemon та же, что и у других программ:

  • пытается прочитать или записать память который не предназначен для чтения или написание этой заявки (ошибка сегментации) или специфичная для x86 (общая ошибка защиты)
  • пытается выполнить привилегированный или неверные инструкции
  • пытается выполнить операции ввода-вывода на аппаратных устройствах, к которым это делает нет разрешения на доступ
  • передача неверных аргументов в систему звонки
  • пытается получить доступ к другой системе ресурсы, к которым относится приложение не имеет разрешения на доступ (ошибка шины)
  • пытается запустить машину инструкции с плохими аргументами (в зависимости от архитектуры процессора): делим на ноль, операции на денормс или значения NaN, доступ к памяти адреса без выравнивания и т. д.
1 голос
/ 06 сентября 2010

Поскольку это LaunchAgent, он запускается как часть сеанса входа в систему и, следовательно, будет убит, если вы выйдете из системы.

С другой стороны, если он умирает до выхода из системы, и вы можете 'Вы не можете найти / исправить то, что вызывает его сбой / выход, или вы можете указать launchd автоматически перезапустить его, добавив

<key>KeepAlive</key>
</true>

в его .plist

...