Linux进程通信IPC

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/notbaron/article/details/79976389

进程间通信IPC技术在其发展过程经历了一些变化,另外其包含众多技术概念,如果不从系统上去梳理一番容易迷失在这信号森林。

IPC是进程间通信的简称,不同的信息共享有多种方式如下图:


进程组对于进程间的通信机构——信号来说,是非常有用的。

其发展规律如下:

Unix IPC包括:

l   最初的管道、FIFO、信号;

l   System V IPC包括:System V消息队列、System V信号量、System V共享内存区;

l   Posix IPC包括:Posix消息队列、Posix信号量、Posix共享内存区。

现有大部分Unix和流行版本都是遵循POSIX标准的,而Linux从一开始就遵 循POSIX标准;

System V(System Five)是Unix操作系统众多版本中的一支,当年UNIX厂家混战中,比较强大的一个,最初由 AT&T 开发并在1983年第一次发布。一共发行了4个 System V 的主要版本:1、2、3 和 4,比如:System V Release 4,或者称为SVR4,是最成功的版本。

在POSIX IPC中, IPC对象使用ipc的名称作为ipc的标识。mq_open sem_open shm_open三个函数的第一个参数就是这个名称。在创建或者打开ipc对象时需要指定操作的mode,例如O_RONLY、O_WRONLY、O_RDWR、O_CREAT、O_EXCL 等,IPC对象是有一定权限的,与文件的权限类似。

在System V IPC中,System v ipc中有一个重要的类型是key_t,在msget、semget、shmget函数操作中都需要利用这个类型是参数。 

我们可以将进程间的通信主要分为如下4种:消息传递、同步、共享内存和远程过程调用。

            再理解下fork,exec,__exit对IPC对象的影响。


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页