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

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

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值