麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統(tǒng) > Unix > 正文

《Unix網(wǎng)絡(luò)編程》卷2 讀書筆記 第3章- System V IPC

2024-06-28 13:24:23
字體:
供稿:網(wǎng)友
《Unix網(wǎng)絡(luò)編程》卷2 讀書筆記 第3章- System V ipC1. 概述
  • 三種類型的System V IPC:System V 消息隊(duì)列、System V 信號(hào)量、System V 共享內(nèi)存區(qū)
  • System V IPC在訪問它們的函數(shù)和內(nèi)核為它們維護(hù)的信息上共享許多類似點(diǎn)。本章講述所有這些共同屬性。
  • 下圖匯總了所有System V IPC 函數(shù)
2. key_t鍵、ftok函數(shù)
  • 頭文件sys/types.h把數(shù)據(jù)類型key_t定義為一個(gè)整數(shù),通常是一個(gè)至少32位的整數(shù)
  1. #include <sys/ipc.h>
  2. key_t ftok (const char *pathname, int id);
  3. Returns: IPC key if OK, -1 on error
  • 函數(shù)ftok把一個(gè)已經(jīng)在的路徑名和一個(gè)整數(shù)標(biāo)識(shí)符轉(zhuǎn)換成一個(gè)key_t值,稱為IPC鍵
  • 如果pathname不存在,或者對(duì)于調(diào)用進(jìn)程不可訪問,ftok返回-1
  • 不能保證兩個(gè)不同的路徑名與同一個(gè)id的組合產(chǎn)生不同的鍵。
3. ipc_perm結(jié)構(gòu)
  • 內(nèi)核給每個(gè)IPC對(duì)象維護(hù)一個(gè)信息結(jié)構(gòu),其內(nèi)容跟內(nèi)核給文件維護(hù)的信息類似
    1. struct ipcqerm {
    2. uid_t uid; /* owner's user id */
    3. gid_t gid; /* owner's group id */
    4. uid_t cuid; /* creator's user id */
    5. gid_t cgid; /* creator's group id */
    6. mode_t mode; /* read - write permissions */
    7. ulong_t seq; /* slot usage sequence number */
    8. key_t key; /* IPC key */
    9. };
4. 創(chuàng)建與打開IPC通道
  • 對(duì)于key值,應(yīng)用程序有兩種選擇
    1. 調(diào)用ftok,給它傳遞pathname和id
    2. 指定key為IPC_PRIVATE,這將保證會(huì)創(chuàng)建一個(gè)新的、唯一的IPC對(duì)象

  • 所有三個(gè)XXXget函數(shù)都有一個(gè)名為oflag的參數(shù),它指定IPC對(duì)象的讀寫權(quán)限位(ipc_perm結(jié)構(gòu)的mode成員),并選擇是創(chuàng)建一個(gè)新的IPC對(duì)象,還是訪問一個(gè)已存在的IPC對(duì)象。

  • System V IPC定義了自己的IPC_XXX常值,而并不像標(biāo)準(zhǔn)open函數(shù)以及Posix IPC函數(shù)那樣使用O_CREAT和O_EXCL常值
  • 注意:System V IPC函數(shù)將它們的IPC_XXX常值根權(quán)限位合到單個(gè)oflag參數(shù)中。而open函數(shù)有一個(gè)名為oflag和mode的參數(shù)
5. IPC 權(quán)限
  • 每當(dāng)使用某個(gè)XXXget函數(shù)創(chuàng)建一個(gè)新的IPC對(duì)象時(shí),以下信息就保存到該對(duì)象的ipc_perm結(jié)構(gòu)中
    1. oflag參數(shù)中的某些位初始化ipc_perm結(jié)構(gòu)的mode成員。SEM_A的后綴A代表alter改變
    2. ipc_perm結(jié)構(gòu)中cuid和cgid成員分別設(shè)置為調(diào)用進(jìn)程的有效用戶ID和有效組ID,這兩個(gè)成員合稱為創(chuàng)建者ID
    3. ipc_perm結(jié)構(gòu)中的uid和gid成員也分別設(shè)置為調(diào)用進(jìn)程的有效用戶ID和有效組ID,這兩個(gè)成員合稱為屬主ID
  • 盡管一個(gè)進(jìn)程可以通過調(diào)用XXXctl函數(shù)修改屬主ID,但創(chuàng)建者ID卻從不改變。XXXctl函數(shù)還允許一個(gè)進(jìn)程修改某個(gè)IPC對(duì)象的mode成員
  • 每當(dāng)一個(gè)進(jìn)程訪問某個(gè)IPC對(duì)象時(shí),IPC就執(zhí)行兩級(jí)檢查,該對(duì)象被打開時(shí)(XXXget函數(shù))執(zhí)行一次,以后每次使用該對(duì)象時(shí)執(zhí)行一次
6. 標(biāo)識(shí)符重用
  • ipc_perm結(jié)構(gòu)中含有一個(gè)seq的變量,它是一個(gè)槽位使用情況序列號(hào)。該變量是一個(gè)由內(nèi)核為系統(tǒng)中每個(gè)潛在的IPC對(duì)象維護(hù)的計(jì)數(shù)器。每當(dāng)刪除一個(gè)IPC對(duì)象時(shí),內(nèi)核就遞增相應(yīng)的槽位號(hào),若溢出則循環(huán)為0 。
  • 該計(jì)數(shù)器的存在有兩個(gè)原因:
    1. 考慮由內(nèi)核維護(hù)的用于打開文件的文件描述符。它們是些小整數(shù),只在單個(gè)進(jìn)程內(nèi)有意義,是進(jìn)程特定的值。然而,System V IPC標(biāo)識(shí)符卻是系統(tǒng)范圍的,而不是特定于進(jìn)程的
    2. 為了避免短時(shí)間內(nèi)重用System V IPC標(biāo)識(shí)符
7. ipcs、ipcrm程序
  • 只能用于System V IPC,而不能用于Posix IPC
  • ipcs -q -m -s
  • ipcrm --all=msg
8. 內(nèi)核限制
  • sysctl命令

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中文字幕一区二区三区久久 | 欧美日韩免费看 | 久草在线高清视频 | 激情91 | 色人阁导航 | 精品中文一区 | 久久精品一区二区三区国产主播 | 青青草国产在线视频 | 一级黄色片在线看 | 国产69久久精品成人看 | 精品一区二区三区中文字幕老牛 | 毛片免费在线播放 | 圆产精品久久久久久久久久久 | 免费黄色在线观看网站 | 黄色欧美精品 | 久久羞羞视频 | 免费观看一区二区三区视频 | 一级电影在线观看 | 91 在线| 中文字幕精品一二三四五六七八 | 午夜视频在线观看91 | 一道本不卡一区 | 国产精品99久久久久久久女警 | 91色爱| 在线日韩av电影 | 久久久久久久久久91 | 久久国产精品久久精品国产演员表 | 国产91影院 | 欧美日韩亚洲一区二区三区 | 黄污网站在线 | 国产精品久久久久久婷婷天堂 | 国产高潮失禁喷水爽到抽搐视频 | 色99999| 极品xxxx欧美一区二区 | 免费淫视频 | 国产一区精品在线观看 | 精品久久久久久久久久久久 | 91色综合综合热五月激情 | caoporn国产一区二区 | 国产精品二区高清在线 | 999插插插 |