IPC结构的键(key)与标识符(ID)

首先要注意一个概念:IPC结构都是内核的结构。也就是说IPC结构由内核维护,对于每个进程都是公共的,不属于某个特定进程。只有这样,IPC结构才能支持它们“进程间通信”的功能。

 

有两个东西可以标识一个IPC结构:标识符(ID)和键(key)。

ID是IPC结构的内部名。内部即在进程内部使用,这样的标识方法是不能支持进程间通信的。

key就是IPC结构的外部名。当多个进程,针对同一个key调用get函数(msgget等),这些进程得到的ID其实是标识了同一个IPC结构。多个进程间就可以通过这个IPC结构通信。

 

已知一个key,当希望利用这个key创建一个新的IPC时,可以使用get函数,并在flag中指定IPC_CREAT位,例如队列的情况,就是qid = msgget(key, IPC_CREAT)。apue15.6.1节提到:若随后另一个进程希望访问该已创建的队列,同样可以使用get函数,但此时不应再指定IPC_CREAT位。但在实际使用中,即使第二个进程在msgget函数中指定了IPC_CREAT位,函数也不会返回错误,且两个进程可以通过该队列(IPC)传递消息。

若在flag中同时指定了IPC_CREAT和IPC_EXCL位,则针对一个已存在的IPC结构再调用get函数时,则会返回错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值