System V IPC基礎(一)

1. System V IPC有三種通信機制:
  • 消息隊列 :消息隊列中的每條消息都有類型,發消息端發送消息要帶有消息類型,收消息端都是通過消息類型來從消息隊列中接收消息。
  • 共享內存 : 通過操作同一塊物理內存,實現進程間通信。
  • 信號量 :信號量集包括多組信號量,信號量能使進程實現同步或者互斥。
2 . 創建上述三種IPC對象的函數接口:
  • 消息隊列 : int msgget(key_t key , int msgflg)
  • 共享內存 : int shmget(key_t key , size_t size , int shmflg )
  • 信號量 : int semget(key_t key , int nsems , int semflg)
三個get系統調用的返回值都是唯一的IPC標識符,IPC標識符對系統全局可見,其傳入參數IPC key也是唯一的 ,才能創建唯一的IPC對象。
3 . IPC key獲取的三個方法:
  1. 隨機指定key
  2. 特定宏:IPC_PRIVATE(雖然宏值爲0,但是系統每次都會返回一個新的IPC標識符)
  3. ftok()函數 : ftok(const char pathname , int proj) , pathname爲真實存在的文件路徑名,因爲ftok是根據 i-node號來生成 key , proj爲一個int類型的數 ,一般生成唯一的 key 都是用這個函數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章