2013-05-02 2 views
1

지금까지 공유 메모리에 대해 배웠습니다. 지금까지 배웠던 모든 것이 나를 혼란스럽게 만들었습니다. 공유 메모리가 배열을 처리하는 방법을 알려주시겠습니까? 또한 자식 프로세스가 배열에 액세스하는 방법을 알려주시겠습니까?공유 메모리가 배열과 어떻게 작동합니까?

+0

아래와 같이 할당 배열로 사용하려면? (즉, 메모리가 전혀 저장되지 않은 물건을 처리하지 못합니다.) 당신이 이해하지 못하는 상황에 대한 구체적인 예를 게시하면 문제를 쉽게 이해할 수 있습니다. – Mat

답변

1

당신은

는 shmat() syntex는

void *shmat(int shmid, const void *shmaddr, int shmflg); 

이 포인터를 반환하고, 공유 메모리에 액세스 할 수는 shmat() 메소드를 사용할 수 있습니다.

당신은 다음과 같은 그냥 일반 메모리처럼

datatype array[size]; 
datatype* array = (datatype*)shmat(shmid, NULL, 0); 
+0

int sum의 경우 다음과 같습니다. int * sum = (int *) shmat (fd, 0,0); –

+0

int * sum = (int *) shmat (fd, NULL, 0); – Kiran

0

공유 메모리 영역은 배열과 마찬가지로 가상 메모리의 연속 된 바이트 집합입니다. 따라서 공유 메모리에 대한 포인터가 있으면 다른 포인터와 마찬가지로 배열처럼 취급 할 수 있습니다.

관련 문제