在 C++ 中处理没有操作系统依赖的消息的方法是啥? [关闭]

Posted

技术标签:

【中文标题】在 C++ 中处理没有操作系统依赖的消息的方法是啥? [关闭]【英文标题】:What is the way to handle messages without os dependency in C++? [closed]在 C++ 中处理没有操作系统依赖的消息的方法是什么? [关闭] 【发布时间】:2013-01-10 22:56:48 【问题描述】:

有没有办法编写 C++ 程序来处理在 Linux 和 Windows 中工作的 IPC? 有没有不依赖操作系统的 C++ 库?

【问题讨论】:

messages 非常多...你能说得更具体点吗? 我们在这里谈论什么样的“消息”? Nononoooo... 亨德尔是德国巴洛克作曲家。您要查找的词是“句柄”。 他的意思可能是WM_开头的东西。 您可以使用跨平台框架,例如 Qt,它主要将操作系统抽象出来,然后您只能使用框架的“消息”或类似机制。 【参考方案1】:

如果您所说的“消息”是指 IPC(进程间通信),那么不,没有操作系统的参与是不可能的,而且您在宇宙中可以找到的每个操作系统的实现方式可能都不同。如果“消息”是指在应用程序中传递数据的任何方式,那么是的,它可以而且应该在没有操作系统参与的情况下完成。

在 IPC 的情况下,如果您只需要传递消息,则始终可以使用 Boost.IPC。当然,如果你还需要获取 UI 事件等,那是不够的; Qt 是 C++ 中常用的便携式 GUI 工具包之一(不是说它漂亮,但它确实有效)。

【讨论】:

Boost 有 IPC 库。使用下面的操作系统设施,但有时你可以闭上眼睛假装没有。 :) 是的,我的意思是 IPC。那么,我需要编写我的程序的两个实例吗? @JalalJaberi:如果你很好,你只需要编写两个发送和接收消息的代码实例。你可以创建一个统一的 API 和你自己的库来为每个操作系统实现 API。【参考方案2】:

如果您谈论的是套接字(也称为 TCP/IP 或 UDP/IP),那么您可以使用套接字库,如果您小心的话,您可以在 Windows 和 Unix 变体上使用相同的代码。但是跨平台套接字 API 的异步能力非常有限(select 调用及其相关的可伸缩性问题)。

您也可以使用libevent。这是跨平台的,并且具有更丰富的异步语义。

对于诸如命名管道或 fifos 之类的东西......我知道没有好的跨平台库来处理这些东西。

【讨论】:

以上是关于在 C++ 中处理没有操作系统依赖的消息的方法是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中进行事件处理的正确方法是啥?

在 protobuf 中处理可选消息的正确方法是啥?

hook是啥意思

c # 初学者 win32 API转型者,c# 的winform的消息机制是啥?以及它的主线,为啥没有消息循环??

RunLoop是啥?

将静态库添加到 C 或 C++ 项目的常用方法是啥?