<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > linux操作系統(tǒng)下的進(jìn)程通信設(shè)計

          linux操作系統(tǒng)下的進(jìn)程通信設(shè)計

          作者: 時間:2010-11-27 來源:網(wǎng)絡(luò) 收藏


          4. 信號量


          信號量又稱為信號燈,它是用來協(xié)調(diào)不同間的數(shù)據(jù)對象的,而最主要的應(yīng)用是前一節(jié)的共享內(nèi)存方式的。本質(zhì)上,信號量是一個計數(shù)器,它用來記錄對某個資源(如共享內(nèi)存)的存取狀況。一般說來,為了獲得共享資源,需要執(zhí)行下列操作:

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

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

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

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

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

          #include sys/types.h>

          #include sys/ipc.h>

          #include sys/sem.h>

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

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

          semctl函數(shù)用來對信號量進(jìn)行操作。

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

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

          semop函數(shù)自動執(zhí)行信號量集合上的操作數(shù)組。

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

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

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

          5.套接口

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

          本文引用地址:http://www.ex-cimer.com/article/151304.htm
          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();