Как я кодирую Моно Демона

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

52
задан Community 23 May 2017 в 02:09
поделиться

7 ответов

Необходимо реализовать моносервис обслуживания и использования. Google для него и Вы найдете несколько примеров.

19
ответ дан lupus 7 November 2019 в 09:31
поделиться

Для получения уведомлений в Unix путь, который использует сигналы, Вы хотите использовать Моно. Unix. UnixSignal для каждого сигнала, что Вы планируете получение и затем называете UnixSignal. WaitAny () на массиве сигналов.

<час>

Вы обычно делали бы это на отдельном потоке.

25
ответ дан metadings 7 November 2019 в 09:31
поделиться

Простой метод состоял бы в том, чтобы послушать на (локальный, высоко) порт и получить команды от клиента управления, как связывают, делает.

А больше выхода Unix путь был бы к , регистрируют обработчик сигналов использование UnixSignal и завершают работу правильно при получении определенного сигнала. Посмотрите Моно FAQ, "Я могу использовать обработчики сигналов с Моно?" для протестов и примера.

волчанка нашла моносервис , который является процессом хостинга с помощью ServiceProcess интерфейсы. Печально это требует установки MONO_DISABLE_SHM, которая отключает некоторые опции в Моно, в особенности межпроцессные системы IPC.

16
ответ дан Community 7 November 2019 в 09:31
поделиться

Демон в соответствии с Linux обычно слушает сигналы, как сигнал уничтожения, но существуют другие, которые позволяют ему делать вещи как "мягкий" перезапуск (читает назад в конфигурации), и т.д.

Обычно это сопровождается сценарием в/etc/init.d каталоге, который управляет запуском и остановкой таких демонов. Обычно изодромный с предварением файл создается под/var/run, который сохраняет идентификатор процесса для сценария для идентификации процесса быстро.

, кодируя для Моно, Вы преуспели бы, поняв среду, для которой Вы кодируете, так как нет никакого различия между Моно процессом или собственным процессом (создано в C, например) или сценарий.

Dave

4
ответ дан Dave Van den Eynde 7 November 2019 в 09:31
поделиться

Miguel de Icaza недавно записал о новом Моно интерактивная оболочка C# , что необходимо быть в состоянии к daemonize достаточно легко. Miguel имеет последующая статья с некоторым исходным кодом, который показывает, как можно включать интерактивную оболочку в другие приложения C#. Это может служить хорошей начальной точкой для Вашего демона.

Примечание, что интерактивная оболочка требует Моно версии 2.2, которая еще не была выпущена. Код доступен в репозиторий SVN Mono , как бы то ни было.

0
ответ дан godbyk 7 November 2019 в 09:31
поделиться

David корректен, останавливание сервиса выполняется через сигнал UNIX, и необходимо использовать обработчик сигналов для ловли его.

0
ответ дан Ana Betts 7 November 2019 в 09:31
поделиться

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

См. Разработка Windows-подобных сервисов в LINUX с помощью MONO?

0
ответ дан 7 November 2019 в 09:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: