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