написание демона C / C ++ (Linux) - PullRequest
4 голосов
/ 23 июля 2010

Я хочу написать универсальную (C / C ++) библиотеку, которую я буду использовать для разработки демонов в среде Linux.Вместо того, чтобы заново изобретать колесо, я подумал, что зайду сюда, чтобы выяснить, есть ли какие-либо хорошо известные библиотеки.

Библиотека может быть либо C, либо C ++, хотя я бы предпочел C ++ (может быть, что-тоэто было частью или основано на превосходной библиотеке BOOST ?).

Кроме того, с точки зрения критериев выбора библиотеки, поскольку демоны являются довольно «критически важными» компонентами, было бы намного лучше, если бы предлагаемая вами библиотека активно поддерживалась группой разработчиков (например, BOOST).библиотека [снова]), имеет активное сообщество (или, по крайней мере, список рассылки, к которому можно прибегнуть, когда сталкиваются с хитрыми ситуациями), а не одинокий человек где-то там ...

Я видел это документ , который является хорошей отправной точкой, но он немного устарел, поэтому мне интересно, есть ли что-нибудь лучше и более известным / используемым там ...?

Кстати, я будуразрабатывать в Ubuntu (10.0.4)

Ответы [ 3 ]

7 голосов
/ 23 июля 2010

Альтернативным решением является использование монитора процессов, такого как supervisord , который управляет несколькими службами, перезапускает их при сбое, предоставляет минималистичную веб-страницу для просмотра и контроля состояния процессов, может управлять группамиуслуг, поддерживает универсальный механизм пересылки событий изменения статуса и другие полезности.Такие инструменты дают вам гораздо большую ценность, чем библиотека демонов.

6 голосов
/ 24 июля 2010
#include <unistd.h>

имеет

int daemon(int nochdir, int noclose);

, который разветвляется, отсоединяется от управляющего терминала, повторно открывает все {stdin, stdout, stderr} в / dev / null и изменяет рабочий каталог на корневой каталог,(на основе флагов, конечно)

1 голос
/ 23 июля 2010

Если ваш демон использует сокеты tcp / ip, вы можете использовать демон inet (или xinetd).Ваш процесс запускается по требованию при поступлении нового входящего соединения. Однако в случае крупномасштабного развертывания могут возникнуть проблемы с масштабируемостью.

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