<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于linux平臺的進(jìn)程通信技術(shù)簡(jiǎn)介

基于linux平臺的進(jìn)程通信技術(shù)簡(jiǎn)介

作者: 時(shí)間:2011-12-04 來(lái)源:網(wǎng)絡(luò ) 收藏
4、信號量

本文引用地址:http://dyxdggzs.com/article/150010.htm

信號量又稱(chēng)為信號燈,它是用來(lái)協(xié)調不同間的數據對象的,而最主要的應用是前一節的共享內存方式的間通信。本質(zhì)上,信號量是一個(gè)計數器,它用來(lái)記錄對某個(gè)資源(如共享內存)的存取狀況。一般說(shuō)來(lái),為了獲得共享資源,需要執行下列操作:

(1) 測試控制該資源的信號量。

(2) 若此信號量的值為正,則允許進(jìn)行使用該資源。進(jìn)程將進(jìn)號量減1。

(3) 若此信號量為0,則該資源目前不可用,進(jìn)程進(jìn)入睡眠狀態(tài),直至信號量值大于0,進(jìn)程被喚醒,轉入步驟(1)。

(4) 當進(jìn)程不再使用一個(gè)信號量控制的資源時(shí),信號量值加1。如果此時(shí)有進(jìn)程正在睡眠等待此信號量,則喚醒此進(jìn)程。

維護信號量狀態(tài)的是Linux內核操作系統而不是用戶(hù)進(jìn)程。我們可以從頭文件/usr/src//include//sem.h中看到內核用來(lái)維護信號量狀態(tài)的各個(gè)結構的定義。信號量是一個(gè)數據集合,用戶(hù)可以單獨使用這一集合的每個(gè)元素。要調用的第一個(gè)函數是semget,用以獲得一個(gè)信號量ID。

#include sys/types.h>

#include sys/ipc.h>

#include sys/sem.h>

int semget(key_t key, int nsems, int flag);

key是前面講過(guò)的IPC結構的關(guān)鍵字,它將來(lái)決定是創(chuàng )建新的信號量集合,還是引用一個(gè)現有的信號量集合。nsems是該集合中的信號量數。如果是創(chuàng )建新集合(一般在服務(wù)器中),則必須指定nsems;如果是引用一個(gè)現有的信號量集合(一般在客戶(hù)機中)則將nsems指定為0。

semctl函數用來(lái)對信號量進(jìn)行操作。

int semctl(int semid, int semnum, int cmd, union semun arg);

不同的操作是通過(guò)cmd參數來(lái)實(shí)現的,在頭文件sem.h中定義了7種不同的操作,實(shí)際編程時(shí)可以參照使用。

semop函數自動(dòng)執行信號量集合上的操作數組。

int semop(int semid, struct sembuf semoparray[], size_t nops);

semoparray是一個(gè)指針,它指向一個(gè)信號量操作數組。nops規定該數組中操作的數量。

下面,我們看一個(gè)具體的例子,它創(chuàng )建一個(gè)特定的IPC結構的關(guān)鍵字和一個(gè)信號量,建立此信號量的索引,修改索引指向的信號量的值,最后我們清除信號量。


5、套接口

套接口(socket)編程是實(shí)現Linux系統和其他大多數操作系統中進(jìn)程間通信的主要方式之一。我們熟知的WWW服務(wù)、FTP服務(wù)、TELNET服務(wù)等都是套接口編程來(lái)實(shí)現的。除了在異地的計算機進(jìn)程間以外,套接口同樣適用于本地同一臺計算機內部的進(jìn)程間通信。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>