Je me demande quelle bibliothèque faciliterait le développement d'un service / démon multi-plate-forme? (C / C ++) P>
Je vis me ciblent: Windows, Linux et OS X. Conditions requises: Opérations de réseau et communication de ports série. P>
Il serait également agréable d'avoir une application de base de service de base. P>
5 Réponses :
Un démon à Linux n'est vraiment qu'un processus qui fonctionne déconnecté d'un terminal. Sous Windows, un service est quelque chose qui peut être contrôlé à l'aide de l'API de gestion de service, mais une fois encore, il s'agit d'un processus déconnecté. La déconnexion de côté, les démons et les serveurs n'ont pas beaucoup en commun, de la tâche à la tâche. Il n'y a pas d'exigence, par exemple, qu'ils soient multi-filetés, être asynchrones ou effectuer des E / S réseau. Étant donné que, c'est un peu difficile de voir ce que ferait une bibliothèque de plateforme. P>
Les démons Linux devraient être démarrés automatiquement par le processus init (I.E. Init ou SystemD), ce qui nécessite un script init et une autre configuration. Ils devraient généralement répondre également de manière appropriée à SIGINT et souvent à SIGNUP ou à d'autres signaux capables.
Boost a probablement la plupart de ce dont vous avez besoin en termes de filetage et Networking E / S. P>
Vous pouvez également trouver QT une bonne alternative. Il a également des bibliothèques de filetage et de mise en réseau et a beaucoup plus facile à utiliser et à comprendre le modèle de programmation entraîné par des événements à l'aide d'une boucle d'exécution. Le système de signalisation / emplacement de Qt est très facile à utiliser et idéal pour un démon / service de réseau (Boost inclut également un SIGNAL / SLOT SYSTEM, mais il est plus difficile à utiliser et n'inclut pas une boucle d'événement; vous devez rouler votre propre utilisation de certaines bibliothèques d'événements). En tant que bibliothèque multiplate-forme, QT peut gérer de nombreux problèmes pour combler le modèle mental UNIX (OS X et Linux) et Windows pour les processus, les systèmes de fichiers, etc. p>
Pour les tests d'unités, j'ai été très satisfait de la bibliothèque de test de l'unité C ++ de Google appelée Googletest A> (bien que les deux stimulants et qt ont également des systèmes de test d'unité intégrés). Il fonctionne sur toutes les plates-formes que vous spécifiez. J'ai fait beaucoup de travail avec Googletest sur des projets QT croisé-plate-forme et l'a trouvée assez satisfaisante. P>
Vous devez jeter un coup d'œil POCO . Selon ce que vous faites, cela pourrait avoir des installations pour faire une grande quantité de travail pour vous avec beaucoup moins de travail que de booster. P>
Une mention obligatoire pour Ace bien que je ne soins pas personnellement à ça beaucoup. p>
Ugh, je déteste as. Si quelque chose, Boost est bien meilleur. Les deux sucent pour différentes raisons cependant. Zeromq vaut la peine d'essayer peut-être. Je n'ai pas encore essayé Poco, a l'air intéressant.
Quand il s'agit de qt, vous pouvez essayer Service QT . p>
5 ans et ceci est toujours la meilleure réponse dans une recherche Google. Lien mis à jour: Github.com/qtproject/qt-solutions/tree/master/qtservice
@ CHADWICK.BOULAY LINK-ROT Les corrections doivent vraiment être modifiées, pas les commentaires.
Y a-t-il une autre alternative autre que qt code>?
Qu'en est-il de GTK?
J'ai trouvé une grosse bibliothèque dans la version non boost d'Asio. Vous n'avez pas besoin de toute la bibliothèque de Boost, mais seulement de cette petite bibliothèque d'en-têtes et très bien documentées http: // pense-async. com / p>
Selon des exemples, un système de client-serveur de jour est mis en œuvre dans très peu de lignes de code. Regardez-le. P>
(N'oubliez pas de regarder la version non Boost-ized) p>
Je réalise que cette question est vraiment très vieille mais j'ai récemment développé un logiciel associé qui ne répond pas directement à la question: GITUB.COM/CUBILESOFT/SERVICE-MANAGER Ce n'est pas une bibliothèque, mais elle gère les difficultés de la rédaction de services de système croisé. Le code source arrive à écrire en C ++ mais c'est surtout sans importance.