C/C++ で異なる実行可能ファイル間で共有構造を定義する必要があります。どうやってやるの?私のstarter.cファイルで:
pid_t child = fork();
if (child > 0) {
// Parent.
... // detach shared memory
argv[0] = "./app1";
execv(argv[0], argv);
}
else {
// Child.
argv[0] = "./app2";
execv(argv[0], argv);
}
- start.h -> 共有構造を定義
- start.c -> オブジェクトとフォークを作成します (上記のコードのように)
- app.c -> 共有構造を使用
アップデート:
start.h でクラスを定義し、 (MAP_SHARED を使用して) 共有メモリでfork()の前にクラスを作成し、 app1.cでそのメンバー (shared_class->s など) にアクセスすると、セグメンテーション違反が発生します。
問題は、クラス/変数を exec 後にそのまま保持する方法です。