UNPv2第十四章 System V共享記憶體區

2021-07-11 11:23:06 字數 1214 閱讀 3103

#include 

int shmget(key_t key, size_t size, int oflag)

返回乙個共享區識別符號

key既可以是ftok返回值,也可以是ipc_private

size以位元組為單位指定記憶體區大小

#include 

void *shmat(int shmid, const

void *shmaddr, int flag)

連線共享記憶體識別符號為shmid的共享記憶體,連線成功後把共享記憶體區物件對映到呼叫程序的位址空間,隨後可像本地空間一樣訪問

 如果shmaddr是乙個空指標,那麼系統呼叫者選擇位址

 如果shmaddr是乙個非空指標,那麼返回位址取決於呼叫者是否給flag指定shd_rnd:

 如果shd_rnd沒有指定,那麼相應的共享記憶體區附接到由shmaddr引數指定的位址

 如果shd_rnd指定了,那麼相應的共享記憶體區附接到shmaddr引數指定的位址向下捨入乙個shmlba常值(lba:低端邊界位址)

#include 

int shmdt(const

void *shmaddr);

斷開共享記憶體連線

#include 

int shmctl(int shmid, int cmd, struct shmid_ds *buf);

cmd有如下取值:

 ipc_stat:得到共享記憶體的狀態,把共享記憶體的shmid_ds結構複製到buf中

 ipc_set:改變共享記憶體的狀態,把buf所指的shmid_ds結構中的uid、gid、mode複製到共享記憶體的shmid_ds結構內

 ipc_rmid:刪除這片共享記憶體

system v共享記憶體區最新常用的函式呼叫是:

 shmget獲取乙個識別符號

 shmat把乙個共享記憶體區附接到呼叫程序的位址空間

 以乙個ipc_stat命令呼叫shmctl:獲取乙個已存在共享記憶體區的大小

 以乙個ipc_rmid命令呼叫shmctl:刪除乙個共享記憶體區物件

UNPv1第十四章 Unix域協議

unix域協議並不是乙個實際的協議族,它只是在同一臺主機上進行客戶 伺服器通訊時,使用與在不同主機上的客戶和伺服器間通訊時相同的api 套介面或xti 的一種方法。當客戶和伺服器在同一臺主機上時,unix域協議是ipc通訊方式的一種替代品。unix域提供了兩種型別的套介面 位元組流套介面 與tcp類...

第十四章約束

約束 constraint 是一種保證資料完整性的規則。約束設定在單個字段或者多個字段組合上,寫入這些欄位的行資料必須要符合約束的規則 約束的五種型別 not null 非空約束,指定某列的所有行資料不能包含空值 unique 唯一性約束,指定列或者列的組合的所有行資料必須唯一 primary ke...

第十四章 約束

第十四章 約束 練習1 1.學校有乙個選課系統,其中包括如下關係模式 系 系編號 主鍵,系名稱 唯一鍵,系主任 非空約束,系所在校去 取值範圍只能在南湖校區和渾南校區 create table xi xi no varchar2 10 primary key,xi name varchar2 10 ...