在Linux作業系統中實現內部程式通訊(轉)
在Linux作業系統中實現內部程式通訊(轉)[@more@] Linux給我們提供了豐富的內部程式通訊機制,包括共享記憶體、記憶體對映檔案、先入先出(FIFO)、介面(sockets)以及多種用於同步的標識。在本文中,我們主要討論一下共享記憶體和記憶體對映檔案技術。
一般來說,內部程式通訊(interprocess communication)也就是IPC,是指兩個或兩個以上程式以及兩個或者兩個以上執行緒之間進行通訊聯絡。每個IPC機制都有不同的強項或者弱點,不過沒有一個IPC機制包含內建的同步方法。因此程式設計師不但需要自己在程式中實現同步,而且還需要為了利用IPC機制而自己開發通訊協議。
共享記憶體
使用共享記憶體和使用malloc來分配記憶體區域很相似。使用共享記憶體的方法是:
1.對一個程式/執行緒使用shmget分配記憶體區域。
2.使用shmat放置一個或多個程式/執行緒在共享記憶體中,你也可以用shmctl來獲取資訊或者控制共享區域。
3.使用shmdt從共享區域中分離。
4.使用shmctl解除分配空間
下面是個例子:
一般來說,內部程式通訊(interprocess communication)也就是IPC,是指兩個或兩個以上程式以及兩個或者兩個以上執行緒之間進行通訊聯絡。每個IPC機制都有不同的強項或者弱點,不過沒有一個IPC機制包含內建的同步方法。因此程式設計師不但需要自己在程式中實現同步,而且還需要為了利用IPC機制而自己開發通訊協議。
共享記憶體
使用共享記憶體和使用malloc來分配記憶體區域很相似。使用共享記憶體的方法是:
1.對一個程式/執行緒使用shmget分配記憶體區域。
2.使用shmat放置一個或多個程式/執行緒在共享記憶體中,你也可以用shmctl來獲取資訊或者控制共享區域。
3.使用shmdt從共享區域中分離。
4.使用shmctl解除分配空間
下面是個例子:
CODE:
//建立共享記憶體區域
intshared_id; char *region; const intshm_size = 1024; shared_id = shmget(IPC_PRIVATE,//保證使用唯一ID shm_size, IPC_CREAT | IPC_EXCL |//建立一個新的記憶體區域 S_IRUSR | S_IWUSR);//使當前使用者可以讀寫這個區域 //交叉程式或生成程式. //將新建的記憶體區域放入程式/執行緒 region = (char*) shmat(segment_id, 0, 0); //其他程式程式碼 ... //將各個程式/執行緒分離出來 shmdt(region); //破壞掉共享記憶體區域 shmctl(shared_id, IPC_RMID, 0); 來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-962393/,如需轉載,請註明出處,否則將追究法律責任。
請登入後發表評論
登入
全部評論
|
相關文章
- CpuMemSets在Linux作業系統中的實現(轉)Linux作業系統
- 在VC++ 6.0下利用訊息實現內部程式通訊 (轉)C++
- Linux作業系統 程式之間的通訊Linux作業系統
- 作業系統(7)程式間通訊作業系統
- 作業系統程式之間的通訊作業系統
- Linux下應用程式開發:QT的內部程式通訊(轉)LinuxQT
- 在Delphi程式設計中獲取作業系統資訊 (轉)程式設計作業系統
- 作業系統第二次上機實驗-程式通訊作業系統
- 寫作業系統之實現程式作業系統
- 作業系統(3)程式及其實現作業系統
- 在Linux作業系統上執行Windows應用程式(轉)Linux作業系統Windows
- 微軟在Linux 作業系統中發現了兩個漏洞微軟Linux作業系統
- 在虛擬機器LINUX作業系統中修改檔案內容虛擬機Linux作業系統
- 在普通PC上建立Linux作業系統(轉)Linux作業系統
- 無線技術在Linux作業系統中的應用(轉)Linux作業系統
- 作業系統--怎麼實現中斷作業系統
- 行業分析| OA系統中的實時通訊行業
- 理解linux/unix作業系統守護程式(轉)Linux作業系統
- Linux作業系統記憶體管理的原始碼實現(轉)Linux作業系統記憶體原始碼
- 實戰多種Linux作業系統共存(轉)Linux作業系統
- 作業系統(6)同步、通訊與死鎖作業系統
- daedalOS:基於WebAssembly在瀏覽器中實現桌面作業系統Web瀏覽器作業系統
- 作業系統知識回顧(3)--程式的同步與通訊作業系統
- 在 OpenResty 裡實現程式間通訊REST
- 【Linux】Linux作業系統 程式管理Linux作業系統
- Linux作業系統介紹(轉)Linux作業系統
- 在Linux系統下實現Server Push(轉)LinuxServer
- 在Linux系統下實現ServerPush(轉)LinuxServer
- 在Linux作業系統下使用DVD燒錄機(轉)Linux作業系統
- 作業系統:程式狀態轉換模擬,C語言實現作業系統C語言
- Linux作業系統下光碟燒錄實戰(轉)Linux作業系統
- Novell推SUSE Linux實時版作業系統(轉)Linux作業系統
- 在Deepin Linux作業系統中如何連線Microsoft OneDriveLinux作業系統ROS
- Oracle在Windows Server下實現作業系統驗證OracleWindowsServer作業系統
- 作業系統 Linux下的程式作業系統Linux
- 作業系統實驗——程式控制作業系統
- 配置安全的Linux作業系統(轉)Linux作業系統
- 紅旗Linux作業系統加速(轉)Linux作業系統