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 都是用这个函数。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章