Linux環境程序間通訊 共享記憶體

2021-06-21 16:38:26 字數 630 閱讀 4020

詳細內容出處:

原理

mmap通過對映某個檔案來達到任意兩個程序之間的通訊。另外還可以通過匿名檔案對映的方式,

來讓有親屬關係的程序也能互相通訊。所以mmap方式的共享記憶體又稱為對映記憶體。

當然如果需要嚴格控制程序之間通訊的同步,可以使用到互斥量或者訊號量來控制。

mmap的實現方式是通過各個程序不同的位址空間對映相同的物理記憶體來進行通訊的,中間的讀寫操作

並不會立即反映到檔案中,所以效率非常高。

注意事項

1. mmap對映的位址空間範圍大小可以超過檔案的實際大小。

但是當共享記憶體寫入到檔案中時,共享記憶體中超過部分的內容,並不能反映到檔案中。

2. mmap並不能改變檔案的大小。

3. mmap使用的時候是分配的實際空間大小是系統page頁的整數倍     

4. mmap引數中使用的fd,在mmap後可以直接close(fd)掉

5. 只有呼叫msync()或者mumap時,才會將共享記憶體的內容flush到檔案中

有可能的情況下,需要判斷這次sigbus是否是由於使用者誤用導致的,如果不是,還是需要重新raise該訊號,給預設的sighandler處理程式處理。

Ubuntu下Linux程序間通訊 共享記憶體

linux提供了多種程序間通訊的方法,常見有管道 匿名 fifo 有名管道 訊息佇列 訊號量 共享記憶體,socket通訊。linux程序間通訊 匿名管道 linux程序間通訊 fifo 有名管道 linux程序間通訊 訊息佇列 linux程序間通訊 訊號量 linux程序間通訊 共享記憶體 5.共...

Linux高階程式設計基礎 程序間通訊之共享記憶體

建立共享記憶體,寫程序每隔2秒向記憶體寫入一次 hello world 如果結束寫操作,則寫程序寫入 end 讀程序從共享記憶體讀取資料,並列印。直到讀到 end 為止。這是寫程序 include include include include include include include inc...

Linux環境程序間通訊

linux 環境程序間通訊 引言 linux 作為乙個開源的作業系統,是我們進行作業系統和提高程式設計水平的最佳途徑之一。好的程式如同好的 一樣,完成的完美 巧妙。開放原始碼的程式都是經過無數人檢驗地,本文將以 linux kernel 2.6.5 為例對 pipe 的工作機制進行闡述。一 程序間通...