代码之家  ›  专栏  ›  技术社区  ›  sorin

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

  •  11
  • sorin  · 技术社区  · 16 年前

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

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

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

    5 回复  |  直到 16 年前
        1
  •  5
  •   Kyle Strand    9 年前

    当涉及到qt时,你可以尝试 qt-service .

        2
  •  6
  •   anon    16 年前

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

        3
  •  5
  •   Duck    16 年前

    你应该看看 POCO . 取决于你在做什么,它可能有一些设施来为你做大量的工作,而工作比提振要少得多。

    必须提及的 ACE 虽然我个人不太在乎。

        4
  •  3
  •   Barry Wark    16 年前

    Boost 可能有你需要的大部分 threading 和 networking I/ O.

    你也可以找到 Qt 一个好的选择。它还具有线程和网络库,并且使用运行循环更易于使用和理解事件驱动的编程模型。qt的信号/插槽系统非常易于使用,是网络守护程序/服务的理想选择(boost还包括 signal/slot 系统,但它很难使用,并且不包括事件循环;您必须使用一些事件库滚动自己的事件)。作为一个跨平台的库,qt可以处理Unix(OS X和Linux)与Windows mental Model之间在进程、文件系统等方面的桥接问题。

    对于单元测试,我很满意谷歌的C++单元测试库 googletest (尽管Boost和Qt都有内置的单元测试系统)。它在您指定的所有平台上运行。我在跨平台的qt项目上做了大量的谷歌测试工作,结果非常令人满意。

        5
  •  0
  •   linello    14 年前

    我在非增强版的ASIO中发现了一个很大的库。您不需要所有的Boost库,但只需要这个小的头文件和非常好的文档库。 http://think-async.com/

    例如,一个日间服务器客户机系统用很少的代码行实现。 看一看。

    (记得看一下非增强版)