나는 구조체가 :C에서 공유 메모리 (shmget/shmat)를 수정하는 방법?
그런 다음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
내 질문은
struct sdata {
int x;
int y;
time_t time;
};
을 다음과 같이 내가 구조체에 대한 공유 메모리를 생성 아주 간단합니다. 이것이 공유 메모리를 액세스/수정하는 올바른 방법입니까? 이것이 최선의 접근 방법입니까?
(나는 동기화를위한 시스템 V 세마포어를 사용하고 내가 그 코드를 포함하지 않았다. 난 그냥 제대로 공유 메모리를 수정/접근하고 있는지 확인하고 싶었다.)
다른 프로세스가'fork()'되어 있다면 공유 메모리가'fork()'전에 만들어져있는 한 IPC_PRIVATE에 문제가 없습니다. 더 일반적인 경우에는주의해야합니다. –