C和C ++之间的Linux共享内存是否可行?

时间:2016-05-26 13:01:17

标签: c++ c linux

我写了一个纯数据插件/外部,但API是在C中 所以我想用C ++编写大部分内容(2016年,对吧?)。

所以我认为我可以用C ++编写主要核心,并且插件只能向/从该核心程序发送/接收信息。

首先,我关于套接字,会更容易实现,但是 然后我读到了linux下的共享内存。

但是有可能在c和c ++之间做到这一点吗?

2 个答案:

答案 0 :(得分:3)

在Linux进程之间共享内存发生在操作系统级别,它与编写程序的原始语言无关。它们都将使用系统调用来访问共享内存。只要您在“原始”模式下使用它,使用何种语言并不重要。

例外情况是,如果您尝试将内存用于结构化数据(即结构或类而不是“原始”字节数组)。然后你有各种特定于语言的怪癖需要解决(填充规则,vtable指针等)。

答案 1 :(得分:2)

C调用约定可以直接在C ++中使用和提供。不要欺骗自己。你不需要C语言中的任何“代理”插件和C ++中的主要核心 - 你可以用C ++编写该插件,暴露兼容的C API。

无论如何,您可以使用POSIX / linux系统函数从C ++中访问共享内存。它实际上只是普通的C函数调用,您可以直接在C ++中使用而无需编写任何“适配器”。