是否可以使用Cygwin或MinGW将Linux守护程序移植到Windows?

时间:2011-10-21 14:52:36

标签: c++ windows cygwin mingw daemon

我有一个Linux C ++应用程序,它作为守护进程运行。当用户执行此应用程序时,它将在后台运行,侦听端口,并等待来自客户端的连接。

是否可以使用Cygwin或MinGW将此类应用程序移植到Windows平台?

感谢。

2 个答案:

答案 0 :(得分:2)

几乎可以移植任何东西(除非只对一个操作系统有意义)。问题是,“移植应用程序X 有多难”?为了帮助回答这个问题,我们需要查看源代码。

通用提示

它基本上归结为您在代码库中分布的编译器/系统相关代码的数量。我看到你至少使用了两件敏感的东西:守护进程和套接字。

守护程序很难移植,因为Windows上的等效项(windows service)需要不同的平台特定代码。这是固定成本(例如,不会因应用程序其余部分的大小而异)。

套接字或多或少难以移植,具体取决于您使用的是高级网络功能(异步I / O等),这些功能在不同系统之间往往会有所不同。它还取决于您是否将套接字操作代码抽象为一些可重用的组件。 Windows支持非常相似的套接字接口(经典的BSD套接字接口,对API的随机部分进行微小修改)。如果您没有编写包装类,则更改一个Socket类比更改代码更容易。

答案 1 :(得分:2)

Cygwin旨在实现POSIX / Linux源代码级别的兼容性,因此您的应用程序应该在没有修改或仅进行微小修改的情况下构建和工作。

MinGW不会尝试提供这样的兼容性层。它只是适用于Windows的GNU工具链,因此您需要将任何POSIX / Linux特定API替换为Windows等。