国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Unix > 正文

《Unix網絡編程》卷2 讀書筆記 第3章- System V IPC

2024-06-28 13:24:23
字體:
來源:轉載
供稿:網友
《Unix網絡編程》卷2 讀書筆記 第3章- System V ipC1. 概述
  • 三種類型的System V IPC:System V 消息隊列、System V 信號量、System V 共享內存區
  • System V IPC在訪問它們的函數和內核為它們維護的信息上共享許多類似點。本章講述所有這些共同屬性。
  • 下圖匯總了所有System V IPC 函數
2. key_t鍵、ftok函數
  • 頭文件sys/types.h把數據類型key_t定義為一個整數,通常是一個至少32位的整數
  1. #include <sys/ipc.h>
  2. key_t ftok (const char *pathname, int id);
  3. Returns: IPC key if OK, -1 on error
  • 函數ftok把一個已經在的路徑名和一個整數標識符轉換成一個key_t值,稱為IPC鍵
  • 如果pathname不存在,或者對于調用進程不可訪問,ftok返回-1
  • 不能保證兩個不同的路徑名與同一個id的組合產生不同的鍵。
3. ipc_perm結構
  • 內核給每個IPC對象維護一個信息結構,其內容跟內核給文件維護的信息類似
    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. 創建與打開IPC通道
  • 對于key值,應用程序有兩種選擇
    1. 調用ftok,給它傳遞pathname和id
    2. 指定key為IPC_PRIVATE,這將保證會創建一個新的、唯一的IPC對象

  • 所有三個XXXget函數都有一個名為oflag的參數,它指定IPC對象的讀寫權限位(ipc_perm結構的mode成員),并選擇是創建一個新的IPC對象,還是訪問一個已存在的IPC對象。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 额济纳旗| 东海县| 枣阳市| 张家界市| 金山区| 武安市| 连南| 奉新县| 大关县| 平邑县| 长寿区| 晋城| 老河口市| 孟州市| 高雄市| 沅陵县| 南昌县| 宽城| 密山市| 垦利县| 西平县| 沙雅县| 得荣县| 宣城市| 绍兴市| 奉节县| 金昌市| 神农架林区| 渑池县| 博客| 浦江县| 固原市| 关岭| 枣强县| 青冈县| 大同县| 九寨沟县| 静乐县| 沾益县| 平安县| 秦皇岛市|