C++ 什么是C++;用于编写跨平台服务/守护进程的库?
我想知道什么库可以简化跨平台服务/守护进程的开发?(C/C++) 我的目标是:Windows、Linux和OSX。 要求:网络操作和串口通信C++ 什么是C++;用于编写跨平台服务/守护进程的库?,c++,cross-platform,service,daemon,multiplatform,C++,Cross Platform,Service,Daemon,Multiplatform,我想知道什么库可以简化跨平台服务/守护进程的开发?(C/C++) 我的目标是:Windows、Linux和OSX。 要求:网络操作和串口通信 另外,最好有一个基本的示例服务应用程序。Linux中的守护进程实际上只是一个与终端断开连接运行的进程。在Windows中,服务是可以使用服务管理API进行控制的,但基本上也只是一个断开连接的进程。除了断开连接之外,守护进程和服务器在任务之间没有太多的共同点。例如,没有要求它们是多线程的、异步的或执行网络I/O。鉴于此,很难看出跨平台库会做什么。可能具备您在
另外,最好有一个基本的示例服务应用程序。Linux中的守护进程实际上只是一个与终端断开连接运行的进程。在Windows中,服务是可以使用服务管理API进行控制的,但基本上也只是一个断开连接的进程。除了断开连接之外,守护进程和服务器在任务之间没有太多的共同点。例如,没有要求它们是多线程的、异步的或执行网络I/O。鉴于此,很难看出跨平台库会做什么。可能具备您在数据和I/O方面所需的大部分功能 你也可以找到一个好的选择。它还具有线程和网络库,并且具有更易于使用和理解的使用运行循环的事件驱动编程模型。Qt的信号/插槽系统非常易于使用,是网络守护程序/服务的理想选择(Boost还包括一个系统,但它更难使用,并且不包括事件循环;您必须使用一些事件库来运行自己的系统)。作为一个跨平台库,Qt可以处理进程、文件系统等的Unix(OS X和Linux)与Windows心智模型之间的桥梁问题 对于单元测试,我很满意谷歌的C++单元测试库(虽然Boost和Qt都有内置的单元测试系统)。它在您指定的所有平台上运行。我在跨平台Qt项目上用googletest做了很多工作,发现它非常令人满意。你应该看看。取决于你们正在做什么,它可能有设施为你们做大量的工作,比Boost少很多的工作
这是一个必须提及的问题,尽管我个人并不太关心它。说到Qt,你可以试试 我在ASIO的非boost版本中找到了一个大库。您不需要所有的boost库,只需要这个小的头文件库和文档非常丰富的库 例如,日间服务器-客户机系统只需很少的代码行即可实现。 看一看
(记得看看非升级版)啊,我讨厌ACE。如果有什么不同的话,boost要好得多。不过,这两种方法都很糟糕,原因各不相同。zeroMQ或许值得一试。我还没有试过POCO,看起来很有趣。5年过去了,这仍然是谷歌搜索的首选答案。更新的链接:@chadwick.boulay链接修复应该是编辑,而不是评论。除了
Qt
,还有其他选择吗?我意识到这个问题确实,真的很老了,但我最近开发了一个相关的软件,它没有直接回答这个问题:它不是一个库,但它确实解决了编写跨平台系统服务的困难。源代码恰好是用C++编写的,但这大部分是无关的。Linux守护进程将自动被init进程(即init或Stand)启动,这需要init脚本和其他一些设置。它们通常也应适当地响应SIGINT,并且通常响应SIGHUP或其他可捕获的信号。