이 교과서의 POSIX 공유 메모리 섹션을 살펴 보겠습니다. 나는 약간의 변경을 할 때까지 컴파일 할 코드를 얻을 수 없었다. 공유 메모리에 대한 아이디어와 그것을 여는 방법을 이해하지만 읽기/쓰기에 여전히 혼란 스럽습니다. 텍스트 북 코드는 hello world 문자열 예제를 보여 주었지만 int, 배열, 구조체 등에 적용하는 방법을 잘 모르겠습니다. 여기에 제가 다루고있는 텍스트 북 코드가 있습니다. 다음은 쓰기입니다.POSIX 공유 메모리 쓰기/읽기
const int SIZE = 4096;
const char *name = "OS";
const char *message_0 = "Hello";
const char *message_1 = "World!";
int shm_fd;
void *ptr;
shm_fd = shm_open(name, O_CREAT | O_RDWR, 0666);
ftruncate(shm_fd, SIZE);
ptr = mmap(0, SIZE, PROT_WRITE, MAP_SHARED, shm_fd, 0);
//sprintf(ptr, "%s", message_0); //non working text book code
sprintf((char*)ptr, "%s", message_0); //my change to get it to work
ptr += strlen(message_0);
//sprintf(ptr, "%s", message_1);
sprintf((char*)ptr, "%s", message_1);
ptr += strlen(message_1);
그리고 여기에 있습니다.
const int SIZE = 4096;
const char *name = "OS";
int shm_fd;
void *ptr;
shm_fd = shm_open(name, O_RDONLY, 0666);
ptr = mmap(0, SIZE, PROT_READ, MAP_SHARED, shm_fd, 0);
printf("%s", (char*)ptr);
shm_unlink(name);
int를 읽거나 쓰려면이를 변경하려고 시도했지만 작동하지 못했습니다. 나는 내가 좋아하는 int 위해 뭔가를 할 수 있어야 인상이었다
*ptr = 2;
ptr++;
하지만, 나는 그것을 얻을 수 없었다, 또는 내가 노력 다른 방식으로 작동 할 수 있습니다. 아무도 그것을 더 잘 설명 할 수 있습니까? 감사.
저를 위해 그것을 정리해 주셔서 감사합니다. 그것은 내가 필요한 것입니다. – Lucas