对于这个冗长的问题,我提前道歉,但我想确保我没有遗漏任何可能改变您的回答的关键点。
我负责维护用“C”编写的系统软件,我们有一些常见的“.a”库。我们有一个我称之为“执行管理器”的东西,他的主要工作是分叉和执行“测试作业”可执行文件的变量列表,并在测试作业过程终止后将控制权返回给执行管理器。所有可执行文件,包括执行管理器,都与上述库静态链接。执行管理器和它派生的测试作业进程通过共享内存使用 IPC。其中一个公共库包含包装函数,用于创建和附加共享内存,其中包含一个永远不会更改的预定义密钥。
几个月前,我们锁定了我们的软件(测试作业加上执行管理器),静态编译它们并发布它们以对测试作业进行“验证”。从那时起,已经有一些对执行管理器进行更改的请求,这将需要更改一些选定的公共库函数。但是,管理层决定他们不想针对新版本的公共库重新编译测试作业,因为这将要求他们重新验证他们当前拥有的测试作业可执行文件;他们不想为此花钱。
由于所有可执行文件都是静态编译的,我通常会说将执行管理器与针对同一公共库的不同版本静态编译的测试作业混合不会有问题。然而,通过共享内存包含 IPC 让我想知道这是否仍然正确。我的直觉是,只要共享内存包装函数没有变化,尤其是密钥,那么我们应该没问题,但我真的可以在这方面使用一些专家意见。
感谢您花时间阅读本文,非常感谢。