我使用shmget
分配了一塊共享內存。共享內存進程間通信
然後,我使用shmat
分別將共享內存附加到進程A和進程B.我假設由shmat
返回的A和B的句柄(即A和B內映射到實際共享內存的地址)是不同的。
我們假設A和B的手柄分別定義爲char* p
和char* q
。 我的問題是如果我們在進程A中寫入一個對象到地址p + sizeof(anotherObject)
,我們可以期望在進程B中的地址q + sizeof(anotherObject)
處獲得相同的對象嗎?
我想是這樣,但並非100%確定。如果是這樣,這個通信或映射機制是如何實現的,因爲我們知道p + sizeof(anotherObject)
和q + sizeof(anotherObject)
指的是不同的內存位置?
考慮使用Boost.Interprocess - 有一個文檔可以回答像你這樣的問題。 – Simon
考慮使用現代接口'shm_open'和'mmap'來完成這樣的任務。他們限制較少,更容易處理。 –