我有一個結構:如何修改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
我的問題是很簡單。這是訪問/修改共享內存的正確方式嗎?這是最好的方法嗎?
(我用的同步系統V信號,我還沒有列入該代碼。我只是想確保我訪問/修改共享內存正確。)
如果另一個進程是'fork()',那麼只要在fork()之前創建共享內存,IPC_PRIVATE就沒有問題。不過,這個警告在更一般的情況下是有效的。 – 2012-04-01 19:46:10