Ответ 1
Когда дело доходит до Qt, вы можете попробовать qt-service.
Интересно, какая библиотека облегчит разработку кросс-платформенного сервиса/демона? (C/С++)
Я нацелен на: Windows, Linux и OS X. Требования: сетевые операции и связь по последовательному порту.
Также было бы неплохо иметь базовое примерное сервисное приложение.
Когда дело доходит до Qt, вы можете попробовать qt-service.
Демон в Linux - это просто процесс, который отключается от терминала. В Windows служба - это то, что можно контролировать с помощью API управления сервисами, но в очередной раз это просто отключенный процесс. Отключение в стороне, демоны и серверы не имеют много общего, от задачи к задаче. Например, нет требования, чтобы они были многопоточными, были асинхронными или выполняли сетевой ввод-вывод. Учитывая, что это трудно понять, что будет делать библиотека с кросс-платформой.
Вы должны посмотреть POCO. В зависимости от того, что вы делаете, у него могут быть средства для выполнения большого количества работы для вас с гораздо меньшим количеством работы, чем Boost.
Обязательное упоминание для ACE, хотя я лично его не очень забочусь.
Boost, вероятно, имеет большую часть того, что вам нужно в терминах threading и network I/O.
Вы также можете найти Qt хорошую альтернативу. Он также имеет потоковые и сетевые библиотеки и гораздо проще в использовании и понимает модель программирования, управляемую событиями, с использованием цикла запуска. Система сигналов/слотов Qt очень проста в использовании и идеально подходит для сетевого демона/службы (Boost также включает в себя сигнал/слот, но это сложнее в использовании и не включает цикл событий, вам нужно катиться самостоятельно, используя некоторую библиотеку событий). В качестве кросс-платформенной библиотеки Qt может справиться с множеством проблем, связанных с переделкой модели Unix (OS X и Linux) и Windows для процессов, файловых систем и т.д.
Для модульного тестирования я был очень доволен библиотекой модульного тестирования Google С++ под названием googletest (хотя и Boost, и Qt также имеют встроенные модульные системы тестирования). Он работает на всех указанных вами платформах. Я много работал с googletest в кросс-платформенных проектах Qt и нашел его вполне удовлетворительным.
Я нашел большую библиотеку в невозбудительной версии ASIO. Вам не нужна вся дополнительная библиотека, но только эта небольшая библиотека заголовков и очень хорошо документированная библиотека http://think-async.com/
В качестве примеров дневная сервер-клиентская система реализована в очень немногих строках кода. Взгляните на это.
(не забудьте взглянуть на версию без расширения)