私が構造を持っている:Cの共有メモリ(shmget/shmat)の変更方法は?
struct sdata {
int x;
int y;
time_t time;
};
次のように私は、構造体の共有メモリを作成します。
size_t shmsize = sizeof(struct sdata);
shmid = shmget(IPC_PRIVATE, shmsize, IPC_CREAT | 0666);
それから私はこのような共有メモリへのアクセス:
struct sdata *data = shmat(shared.shmid, (void *) 0, 0);
data->time = time(NULL); // function returns the current time
私の質問ですがものすごく単純。これは共有メモリにアクセス/変更する正しい方法ですか?これが最善のアプローチですか?
(私は同期のためのSystem Vセマフォを使用していますが、私はそのコードを含めていない。私はちょうど私が正しく共有メモリを変更する/アクセスしていますが確認したかった。)
他のプロセスが 'fork()'されている場合、 'fork()'の前に共有メモリが作成されている限り、IPC_PRIVATEに問題はありません。ただし、より一般的なケースでは注意が必要です。 –