0
我正在閱讀本教科書的POSIX共享內存部分。直到我做了一些更改之後,我才能從書中獲取代碼進行編譯。我理解共享內存和如何打開它的想法,但我仍然對讀/寫有困惑。教科書代碼顯示了一個hello世界字符串的例子,但我不知道如何將它應用到ints,數組,結構等。下面是我正在使用的教科書代碼。這是寫。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);
我試圖改變這個寫/讀整數,但我無法得到它的工作。我的印象是,我應該能夠做一些整數如:
*ptr = 2;
ptr++;
但是,我不明白,或者我嘗試工作的任何其他方式。任何人都可以解釋得更好嗎謝謝。
感謝您爲我解決這個問題。這正是我需要的。 – Lucas