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

时间:2010-04-18 20:32:26

标签: c++ cross-platform service daemon multiplatform

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

我的目标是:Windows,Linux和OS X. 要求:网络操作和串口通信。

还有一个基本的样本服务应用程序会很好。

5 个答案:

答案 0 :(得分:6)

Linux中的守护进程实际上只是一个与终端断开连接的进程。在Windows中,服务是可以使用服务管理API控制的东西,但再次基本上只是一个断开连接的过程。除了断开连接,守护进程和服务器没有太多共同点,从任务到任务。例如,没有要求它们是多线程的,异步的或执行网络I / O.鉴于此,很难看出跨平台库会做什么。

答案 1 :(得分:6)

说到Qt,你可以试试qt-service

答案 2 :(得分:5)

你应该看看POCO。根据您正在做的事情,它可以为您提供大量工作的设施,而且工作量远远少于Boost。

ACE的强制性提及虽然我个人并不关心它。

答案 3 :(得分:3)

Boost可能包含threadingnetworking I / O所需的大部分内容。

您可能还会发现Qt是一个不错的选择。它还具有线程和网络库,并且更易于使用和使用。使用运行循环理解事件驱动的编程模型。 Qt的信号/插槽系统非常易于使用,是网络守护进程/服务的理想选择(Boost还包括一个signal/slot系统,但它更难使用而且不包含事件循环;你必须自己使用一些事件库)。作为一个跨平台的库,Qt可以处理许多关于桥接Unix(OS X和Linux)与Windows心理模型的过程,文件系统等问题。

对于单元测试,我对Google的C ++单元测试库googletest非常满意(尽管Boost和Qt都有内置的单元测试系统)。它在您指定的所有平台上运行。我已经在googletest上完成了很多关于跨平台Qt项目的工作,并且发现它非常令人满意。

答案 4 :(得分:0)

我在ASIO的非升级版本中找到了一个大型库。您不需要所有的boost库,只需要这个只有少量标题的文档库http://think-async.com/

作为示例,日常服务器 - 客户端系统仅在极少数代码行中实现。 看看吧。

(记得看看非增强型版本)