C++ 什么是C++;用于编写跨平台服务/守护进程的库?

C++ 什么是C++;用于编写跨平台服务/守护进程的库?,c++,cross-platform,service,daemon,multiplatform,C++,Cross Platform,Service,Daemon,Multiplatform,我想知道什么库可以简化跨平台服务/守护进程的开发?(C/C++) 我的目标是:Windows、Linux和OSX。 要求:网络操作和串口通信 另外,最好有一个基本的示例服务应用程序。Linux中的守护进程实际上只是一个与终端断开连接运行的进程。在Windows中,服务是可以使用服务管理API进行控制的,但基本上也只是一个断开连接的进程。除了断开连接之外,守护进程和服务器在任务之间没有太多的共同点。例如,没有要求它们是多线程的、异步的或执行网络I/O。鉴于此,很难看出跨平台库会做什么。可能具备您在

我想知道什么库可以简化跨平台服务/守护进程的开发?(C/C++)

我的目标是:Windows、Linux和OSX。 要求:网络操作和串口通信


另外,最好有一个基本的示例服务应用程序。

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或其他可捕获的信号。