首页 百科知识 Ⅴ进程间通信

Ⅴ进程间通信

时间:2022-10-09 百科知识 版权反馈
【摘要】:Linux完全支持Unix System V中的3种IPC机制:消息队列、信号量、共享内存。系统V IPC对象不能直接用一个键值来引用,而只能使用引用描述符。虽然Linux在3种IPC对象上定义了许多操作,但只提供了一个系统调用sys_ipc,通过该系统调用,可以实现所有的IPC操作。

3.3 SYSTEM Ⅴ进程间通信

Linux完全支持Unix System V中的3种IPC机制:消息队列、信号量、共享内存。系统V的IPC机制十分类似于文件,其使用过程是:

(1)创建或打开IPC对象,获得该对象的引用描述符。

(2)利用引用描述符使用IPC对象。

(3)关闭或释放IPC对象。

对象的引用描述符是它在对象表中的索引。每种IPC机制都有自己的一套数据结构,虽然这些结构的内容互不相同,但每种对象的数据结构中都包含一个ipc_perm结构,它含有创建者的用户及组标志、所有者的用户及组标志、对象的存取模式以及IPC对象键(key),以确定一个IPC操作是否可访问该资源。ipc_perm结构描述对一个系统V IPC对象的存取权限。

struct ipc_perm

{

 key_t key; /* 键 */

 ushort uid; /*所有者 uid*/

 ushort gid; /*所有者 gid */

 ushort cuid; /*创建者 uid */

 ushort cgid; /*创建者 gid */

 ushort mode; /*读/写权限*/

 ushort seq; /*序列号*/

};

结构ipc_perm的成员mode的低九位定义了对该资源的访问许可,以确定一个执行了ipc系统调用的进程能否访问该资源。

IPC对象键值被用来定位系统V IPC对象的引用标志符。这样的键值一共有两组:

公有:如果此键为公有,则系统中任何进程,只要通过了权限检查,就可以获得该键(key)所对应的IPC对象的引用描述符。系统V IPC对象不能直接用一个键值来引用,而只能使用引用描述符。

私有:则键值为0,说明每个进程都可以用键值0建立一个专供其私用的对象。

虽然Linux在3种IPC对象上定义了许多操作,但只提供了一个系统调用sys_ipc,通过该系统调用,可以实现所有的IPC操作。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈