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结构上汇聚。
在Linux中如何查看ipc对象如何删除ipc对象命令
ipcs -a:查看所有的ipc对象
ipcs -m:查看共享内存
ipcs -q:消息对列
ipcs -s:信号量
删除ipc对象命令:
ipcrm -m SHM_ID 或ipcrm -M shm_key
ipcrm -q MSG_ID 或ipcrm -Q msg_key
ipcrm -s SEM_ID 或ipcrm -S sem_key