[問題] Share memory一問
以下是我的程式碼
key_t _key = 889;
int _size = 32;
int _id1 = shmget(_key, _size, 0777 | IPC_CREAT);
void* _addr1 = shmat(_id1, 0, 0);
int _id2 = shmget(_key, _size, 0777 | IPC_CREAT);
void* _addr2 = shmat(_id2, 0, 0);
std::cout << (int)_addr1 << std::endl;
std::cout << (int)_addr2 << std::endl;
得到結果是
805306368
1073741824
請問一下各位
照理說相同的key值所取到的記憶體位址應該是要相同的才是
否則要怎麼分享記憶體的內容呢
那如果我把程式改為
key_t _key = 889;
int _size = 32;
int _id1 = shmget(_key, _size, 0777 | IPC_CREAT);
void* _addr1 = shmat(_id1, 0, 0);
void* _addr2 = shmat(_id1, 0, 0);
std::cout << (int)_addr1 << std::endl;
std::cout << (int)_addr2 << std::endl;
得到的結果依然是
805306368
1073741824
請問如果相同一個id執行了兩次的shmat的話
會發生甚麼狀況呢
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.220.71.34
推
10/28 16:41, , 1F
10/28 16:41, 1F
→
10/28 16:42, , 2F
10/28 16:42, 2F
→
10/28 16:42, , 3F
10/28 16:42, 3F
推
10/28 16:52, , 4F
10/28 16:52, 4F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章