linux網路編程之posix共用記憶體

來源:互聯網
上載者:User

標籤:

今天繼續研究posix IPC對象,這次主要是學習一下posix共用記憶體的使用方法,下面開始:

下面編寫程式來建立一個共用記憶體:

編譯運行:

那posix的共用記憶體存放在哪裡呢?上節中學的posix的訊息佇列是在虛擬檔案當中建立一個訊息佇列,需要我們手工將它掛載到某個目錄下才能看到,同樣的,posix共用記憶體也是需要將其掛載,只不過這個掛載操作是由系統完成的,而不用我們人工去操作了,已經掛載到了/dev/shm下了,如下:

接下來要介紹的函數為修改共用記憶體的大小:

【說明】:實際上ftruncate函數也能修改檔案的大小。

下面修改程式來使用一下它:

編譯運行:

其中struct stat的結構體為:

修改程式如下:

編譯運行:

這個比較簡單,實驗一下:

編譯運行:

現在我們已經建立了一個共用記憶體對象,那如何用它呢?則需要用到下面這個函數才行:

下面來使用一下,映射成功之後,先往記憶體中寫入資料,然後再從記憶體中來讀取:

接下來做一個容錯處理:

實際上映射失敗有專門的宏定義,從man協助中可以得知:

所以,用它來代替-1程式會更加可讀:

編譯運行:

這是為什麼呢?還是從man協助中來尋找答案:

所以問題原因找到了,則修改一下開啟檔案既可:

再次編譯運行:

有沒有成功寫入,則需要編寫一個讀取程式來驗證一下:

編譯運行:

實際上可以用過shell命令直接查看共用記憶體的內容:

好了,這次學的東西比較簡單,下次繼續~

linux網路編程之posix共用記憶體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.