进程:进程是计算机运行的基本单位,利用多进程能够实现系统的多任务;可是,在多进程的任务中,进程之间的通讯是比较麻烦的,由于,进程之间使用的是不一样的进程空间,因此,编写多进程的系统,首先要决解进程之间的通讯。 linux
linux/unix下的进程间的通讯主要分为两大类: 编程
一、基于文件的IPC; 数组
二、基于内存的IPC;; 网络
基于文件的IPC又能够分为如下几类:基于普通文件的IPC、基于管道文件的IPC、基于socket文件的IPC。基于内存的IPC包括:基于共享内存的IPC,基于共享队列的IPC,基于信号量的IPC。 socket
普通文件的IPC:使用普通文件的IPC是决解进程间通讯的最基本方式,进程访问和操做普通文件;可是,基于普通文件IPC的一个主要技术问题是,一个进程改变了该文件,可是其余没法感知到文件的变化,为决解这个问题,可使用一个特殊的文件:管道文件。 函数
基于管道文件的IPC:管道是进程间通讯的主要手段之一。管道文件其实是一个只存在于内存中的文件,对管道的操做实际是对两个文件的操做,分别表示对管道文件的读和写,根据管道的建立方式,管道文件能够分为普通管道和匿名管道;可是,匿名管道只能使用在父子进程之间。 工具
基于socket的IPC:基于socket的IPC主要使用在网络编程之中,是一种比较重要的文件通讯方式。基于文件的IPC主要分为两种模型:对等模型和C/S模型,对等模型主要用于udp编程,而C/S模型主要用于Tcp编程。 spa
基于内存的IPC:在介绍基于内存的IPC以前,首先要先介绍一下一组内核内存的工具(ipcs),ipcsipcs命令往标准输出写入一些关于活动进程间通讯设施的信息,ipcs能够指定查看的具体信息,如ipcs -m 查看共享内存, -q:查看共享队列,ipcs -s查看共享信号量,以上3中都不指定时则是查看共享内存、共享队列和共享信号量; unix
基于共享内存的IPC:基于共享内存的编程模型是:首先须要建立(获得)一个共享内存,获得一个ID;而后把该ID对应的共享内存映射为虚拟地址(挂载);而后就可使用虚拟地址访问内核的共享内存(使用与内存相关的函数和运算符号);最后就是卸载虚拟地址和删除共享内存。 队列
基于共享队列的IPC:基于共享队列的编程模型是:首先须要建立(获得)共享队列;而后使用共享队列;最后记得删除该共享队列。
基于信号量的IPC:信号量是共享内存整数数组,根据须要定义指定数组的长度,信号量就是根据数组中的值,决定阻塞仍是解除阻塞;基于信号量的编程模型是:建立(获得)信号量;而后初始化信号量中指定下标的值;而后根据信号量阻塞或者是解除阻塞;最后删除信号量。
对linux/unix的进程间通讯的基本方式介绍到此;详细的内容将分别进行描述。