Какую библиотеку С++ можно использовать для создания межплатформенного сервиса/демон?

Интересно, какая библиотека облегчит разработку кросс-платформенного сервиса/демона? (C/С++)

Я нацелен на: Windows, Linux и OS X. Требования: сетевые операции и связь по последовательному порту.

Также было бы неплохо иметь базовое примерное сервисное приложение.

Ответ 1

Когда дело доходит до Qt, вы можете попробовать qt-service.

Ответ 2

Демон в Linux - это просто процесс, который отключается от терминала. В Windows служба - это то, что можно контролировать с помощью API управления сервисами, но в очередной раз это просто отключенный процесс. Отключение в стороне, демоны и серверы не имеют много общего, от задачи к задаче. Например, нет требования, чтобы они были многопоточными, были асинхронными или выполняли сетевой ввод-вывод. Учитывая, что это трудно понять, что будет делать библиотека с кросс-платформой.

Ответ 3

Вы должны посмотреть POCO. В зависимости от того, что вы делаете, у него могут быть средства для выполнения большого количества работы для вас с гораздо меньшим количеством работы, чем Boost.

Обязательное упоминание для ACE, хотя я лично его не очень забочусь.

Ответ 4

Boost, вероятно, имеет большую часть того, что вам нужно в терминах threading и network I/O.

Вы также можете найти Qt хорошую альтернативу. Он также имеет потоковые и сетевые библиотеки и гораздо проще в использовании и понимает модель программирования, управляемую событиями, с использованием цикла запуска. Система сигналов/слотов Qt очень проста в использовании и идеально подходит для сетевого демона/службы (Boost также включает в себя сигнал/слот, но это сложнее в использовании и не включает цикл событий, вам нужно катиться самостоятельно, используя некоторую библиотеку событий). В качестве кросс-платформенной библиотеки Qt может справиться с множеством проблем, связанных с переделкой модели Unix (OS X и Linux) и Windows для процессов, файловых систем и т.д.

Для модульного тестирования я был очень доволен библиотекой модульного тестирования Google С++ под названием googletest (хотя и Boost, и Qt также имеют встроенные модульные системы тестирования). Он работает на всех указанных вами платформах. Я много работал с googletest в кросс-платформенных проектах Qt и нашел его вполне удовлетворительным.

Ответ 5

Я нашел большую библиотеку в невозбудительной версии ASIO. Вам не нужна вся дополнительная библиотека, но только эта небольшая библиотека заголовков и очень хорошо документированная библиотека http://think-async.com/

В качестве примеров дневная сервер-клиентская система реализована в очень немногих строках кода. Взгляните на это.

(не забудьте взглянуть на версию без расширения)