Linux 进程间通信(五)IPC的特性

版权声明:转载请声明 https://blog.csdn.net/qq_40732350/article/details/82831828

1.标识符和键

每个内核中的IPC结构(消息队列、信号量或共享存储段)都用一个非负整数的标识符 (identifier)加以引用。

例如,要向一个消息队列发送消息或者从一个消息队列取消息,只需要知道其队列标识符。

当一个IPC结构被创建,然后又被删除时,与这种结构相关的标识符连续加1,直至达到一个整型数的最大正值,然后又回转到0。

标识符是IPC对象的内部名。

为使多个合作进程能够在同一IPC对象上汇聚,需要提供一个外部命名方案。为此,每个IPC对象都与一个键(key)相关联,将这个键作为该对象的外部名。

无论何时创建IPC结构(通过调用msgget、semget或shmget创建),都应指定一个键。这个键的数据类型是基本系统数据类型key_t。

key_t ftok(const char *pathname, int proj_id);  //创建IPC的key(键)

一般用法:

if((key=ftok(".",'a'))==-1)
{     
    perror("ftok");    
    exit(1);  
}

有多种方法使客户进程和服务器进程在同一IPC结构上汇聚。

猜你喜欢

转载自blog.csdn.net/qq_40732350/article/details/82831828