進程間通信第三章(System V IPC)

1.概述

System V IPC的三種類型:

System V消息隊列

System V信號量

System V共享內存區

2.key_t鍵和ftok函數

三種類型的System V IPC使用key_t鍵作爲它們的名字,key_t在頭文件<sys/types.h>定義,通常至少爲32位整數值。

函數ftok把一個已存在的路徑名和一個整數標識符轉換成一個key_t值,稱爲IPC鍵。

ftok的典型實現調用stat函數,然後組合以下三個值:

pathname所在的文件系統的信息(stat結構的st_dev成員)

該文件在文件系統的索引節點號(stat結構的st_ino成員)

id的低序8位(不能爲0)

由此,id在IPC鍵的高序8位,st_dev的低序12位IPC在鍵的接下來的12位,st_ino的低序12位在最後

3.ipc_perm結構

內核給每個IPC對象維護一個信息結構,其內容跟內核給文件維護的信息類似。該結構以及System V IPC函數使用的較爲明顯的常數值定義在<sys/ipc.h>頭文件中。

4.創建與打開IPC通道

創建或打開IPC對象有三個函數:msgget、semget、shmget,它們的第一個參數類型爲key_t,對於key值應用程序有兩種選擇:

調用ftok,給它傳遞pathname和id。

指定key爲IPC_PRIVATE,這將保證創建一個新的、唯一的IPC對象。

getXXX函數都有一個名爲oflag的參數,這個參數可以創建一個新的IPC對象也可以訪問一個已存在的IPC對象,具體規則如下:

設置oflag參數的IPC_CREATE位但不設置它的IPC_EXCL位,如果所指定的IPC對象不存在,就創建一個新的對象,否則返回該對象。

同時設置oflag的IPC_CREATE和IPC_EXCL位時,如果所指定鍵的IPC對象不存在,就創建一個新的對象,否則返回一個EEXIST錯誤。

5.IPC權限

與Posix的IPC權限大體相同

6.ipcs和ipcrm程序

ipcs輸出有關System V IPC特性的各種信息,ipcrm則刪除一個System V消息隊列、信號量集或共享內存區。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章