c - 混合 exe 静态编译的不同版本的库 w/共享内存

标签 c linux shared-memory

我提前为这个冗长的问题道歉,但我想确保我没有遗漏任何可能会改变您的回答的关键点。

我负责维护用“C”语言编写的系统软件,我们有一些常用的“.a”库。我们有一个我称之为“执行管理器”的东西,它的主要工作是 fork 和执行“测试作业”可执行文件的变量列表,并在测试作业进程终止后将控制权返回给执行管理器。所有可执行文件,包括执行管理器,都静态链接到上述库。执行管理器和它派生的测试作业进程通过共享内存使用 IPC。其中一个公共(public)库包含包装函数,用于创建共享内存并使用永不更改的预定义 key 附加共享内存。

几个月前,我们锁定了我们的软件(测试作业加执行管理器),静态编译它们并发布它们以对测试作业进行“验证”。从那时起,有一些要求对执行管理器进行更改的请求,这将需要更改选定的几个公共(public)库函数。但是,管理层已决定他们不想针对新版本的公共(public)库重新编译测试作业,因为这将要求他们重新验证当前拥有的测试作业可执行文件;他们不想为此花钱。

由于所有可执行文件都是静态编译的,我通常会说将执行管理器与针对同一公共(public)库的不同版本静态编译的测试作业混合使用不会有问题。但是,通过共享内存包含 IPC 让我想知道这是否仍然正确。我的直觉告诉我,只要共享内存包装函数没有变化,尤其是键,那么我们应该没问题,但我真的可以就此征求一些专家意见。

感谢您花时间阅读本文,非常感谢。

最佳答案

您应该没问题,只要定义进程如何通过共享内存相互通信的数据结构和协议(protocol)没有改变。 (也就是说,您的小 ABI 存在于两个进程之间)。

关于c - 混合 exe 静态编译的不同版本的库 w/共享内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2098713/

相关文章:

arrays - char 之前的预期表达式

python - 如何将质询密码编码到证书请求中

php - 无法使用 PHP 运行 shell 脚本文件

c - 在 Linux 中用 C 语言获取主音量

c++ - 共享内存 API,其中一个进程可以将共享内存附加到其他进程

php - PHP 中的共享内存文件

C - 咀嚼问题

c - 信号处理程序在我的 C http 服务器上不工作

linux - rabbitmq - 自定义配置文件 - disk_free_limit 设置不正确

c++ - 如何在程序崩溃后释放 managed_shared_memory : what are effective techniques to use during debugging?