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

Is Linux shared memory between C and C++ feasible?

本文关键字:Linux 是否 内存 共享 C++ 之间      更新时间:2023-10-16

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

所以我想我可以用C++编写主核心,并让 pluggn 只向该核心程序发送/接收信息。

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

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

在 Linux 进程之间共享内存发生在操作系统级别,这与编写程序的原始语言无关。两者都将使用系统调用来访问共享内存。只要你在"原始"模式下使用它,使用什么语言并不重要。

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

C调用约定可以直接使用,也可以在C++内提供。不要自欺欺人。你不需要任何 C 中的"代理"插件和 C++ 中的主核心——你可以用 C++ 编写该插件,公开兼容的 C API。

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

相关文章: