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

来源:互联网 发布:开淘宝店要多少钱2016 编辑:程序博客网 时间:2024/05/05 09:37

首先要注意一个概念: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函数时,则会返回错误。

原创粉丝点击