11

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

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

拥有一个基本的示例服务应用程序也很好。

4

5 回答 5

8

对于 Qt,您可以尝试qt-service

于 2010-05-12T09:50:10.803 回答
6

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

于 2010-04-18T20:50:03.150 回答
5

You should take a look POCO. Depending on what you are doing it could have facilities to do a large amount of the work for you with a lot less work than Boost.

An obligatory mention for ACE though I don't personally care for it much.

于 2010-04-18T21:03:21.877 回答
3

在线程网络I/O方面, Boost可能拥有您所需要的大部分功能。

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

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

于 2010-04-18T20:51:00.987 回答
0

我在 ASIO 的非增强版本中找到了一个大库。你不需要所有的 boost 库,只需要这个小标题和非常好的文档库http://think-async.com/

例如,一个白天的服务器-客户端系统是用很少的代码行来实现的。看看它。

(记得看非增强版)

于 2012-03-26T20:17:42.510 回答