程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 一起talk C栗子吧(第九十六回:C語言實例--使用共享內存進行進程間通信二)

一起talk C栗子吧(第九十六回:C語言實例--使用共享內存進行進程間通信二)

編輯:關於C語言

一起talk C栗子吧(第九十六回:C語言實例--使用共享內存進行進程間通信二)



各位看官們,大家好,上一回中咱們說的是使用共享內存進行進程間通信的例子,這一回咱們接著上一回內容繼續說使用共享內存進行進程間通信。閒話休提,言歸正轉。讓我們一起talk C栗子吧!

我們在上一回中介紹了共享內存的概念和相關函數的用法,這一回中我們通過具體的例子來說明如何使用共享內存進行進程間的通信。下面是使用共享內存的具體步驟:

1.定義一個結構體類型,用來當作共享內存的類型; 2.使用shmget函數獲取共享內存,代碼中的鍵使用了111這個隨機數字; 3.使用shmat函數把共享連接到進程的地址空間中; 4.從共享內存中讀取數據,或者向共享內存中寫入數據; 5.使用shmdt函數把共享內存從進程的地址空間中分離出來; 6.使用shmctl函數刪除共享內存,需要使用的命令:IPC_RMID;

看官們,正文中就不寫代碼了,詳細的代碼放到了我的資源中,大家可以點擊這裡下載使用。

下面是程序的運行結果,請大家參考:

./s -r                                  //運行程序並且使用-r參數,表示啟動讀取數據的進程
there is not any data in share memory   //這時共享內存中還沒有數據
./s -w                                  //運行程序並且使用-w參數,表示啟動寫入數據的進程
write data into share memory.count:3,data:hello share memory //提示寫入的數據
./s -r                                //再次運行程序並且使用-r參數,表示啟動讀取數據的進程                
the data of share memory.count:3,data:hello share memory  //顯示從共享內存中讀取的數據

在程序中我們使用參數來區分不同的進程,同時使用一個標記位來判斷共享內存中是否有數據。另外,使用共享內存進行進程間通信時需要使用同步機制,比如我們在剛開始運行程序時,因為還沒有執行寫進程,共享內存中沒有數據,這時候,讀進程不能從共享內存中讀取到數據。

各位看官,關於使用共享內存進行進程間通信的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved