長々とした質問で申し訳ありませんが、回答を変更する可能性のある重要なポイントを省略していないことを確認したかったのです。
私は「C」で書かれたシステム ソフトウェアの保守を担当しており、そのうちいくつかの共通の「.a」ライブラリがあります。主な仕事は、「テストジョブ」実行可能ファイルの変数リストをフォークして実行し、テストジョブプロセスが終了すると実行マネージャーに制御を戻すことです。実行マネージャーを含むすべての実行可能ファイルは、前述のライブラリに対して静的にリンクされています。実行マネージャーと、それがフォークするテストジョブ プロセスは、共有メモリを介して IPC を使用します。共通ライブラリの 1 つには、決して変更されない定義済みのキーを使用して共有メモリを作成およびアタッチするためのラッパー関数が含まれています。
数か月前、私たちはソフトウェア (テストジョブと実行マネージャー) をロックダウンし、それらを静的にコンパイルしてリリースし、テストジョブを「証明」しました。その時以来、いくつかの一般的なライブラリ関数を選択する必要がある実行マネージャーに変更を加えるといういくつかの要求がありました。ただし、経営陣は、現在所有しているテストジョブ実行可能ファイルを再検証する必要があるため、共通ライブラリの新しいバージョンに対してテストジョブを再コンパイルしたくないと決定しました。そして彼らはそれをするためにお金を使いたくないのです。
すべての実行可能ファイルは静的にコンパイルされているため、同じ共通ライブラリの異なるバージョンに対して静的にコンパイルされたテスト ジョブと実行マネージャーを混在させても問題にはなりません。しかし、共有メモリを介した IPC の組み込みは、それがまだ正しいかどうか疑問に思っています。私の直感によると、共有メモリ ラッパー関数、特にキーに変更がない限り、問題はありませんが、これについては専門家の意見を参考にすることができます。
これを読んでくれてありがとう。