當前位置:編程學習大全網 - 源碼下載 - linux共享內存存在於進程空間的什麽地方?

linux共享內存存在於進程空間的什麽地方?

* * *內存共享模式:從物理內存中取出壹部分,作為多個進程共享。* * *內存共享是在進程間共享數據的最快方式。壹個進程將數據寫入內存共享區,所有共享這個內存的進程可以立即看到它的內容。* * *共享內存實現步驟:1。創建* *共享內存並使用shmget函數。第二,映射* * *共享內存,將這個創建的* * *共享內存映射到壹個特定的進程空間,使用shmat函數。Create * * *共享內存shmget: int shmget (key _ tkey,size _ tsize,int shmflg)函數:獲取* * *共享內存標識符或創建* * *共享內存對象並返回* * *共享內存標識符。Key: 0(IPC_PRIVATE)將創建* * *共享內存對象大小:大於0的整數,以字節為單位創建* * *共享內存的大小。當只獲取* * *共享內存時,指定0.shmflg:0表示取* * *共享內存標識符,如果不存在,函數報錯;IPC_CREAT,如果內核中沒有鍵值等於key的* * *共享內存,則創建壹個* * *共享內存;如果存在* * *共享內存,則返回* * *共享內存的標識;IPC _ CREATIPC _ EXCL:如果內核中沒有鍵值等於key的* * *共享內存,那麽會創建壹個新的消息隊列;如果有這種* * *共享內存,會報錯;函數返回值:如果成功,返回內存的標識符;如果有錯誤,則返回-1。錯誤原因在於將* * *共享內存映射到調用進程的地址空間shmat: void * shmat (int shmid,constvoid * shmaddr,int shm flg)msqid:* * * *共享內存標識符shmaddr:指定* * *共享內存在進程內存地址中出現的位置。Shmflg: SHM_RDONLY只讀模式,其他為讀寫模式函數返回值:如果成功,返回附帶的* * *共享內存地址;錯誤返回-1。錯誤原因在於斷開* * *共享內存連接shmdt:intshmdt(const void * shmaddr)函數:incoming shmaddr,連接* *共享內存起始地址;如果斷開成功,則返回0,如果有錯誤,則返回-1。錯誤的原因在於錯誤。父進程與子進程之間的通信示例:# include # include # include int main(int argc,char * * argv) {if (argc
  • 上一篇:福州連江大齊漁村壹日遊
  • 下一篇:如何通過修復或刪除解決打開Excel文件提示發現不可讀取的內容
  • copyright 2024編程學習大全網