c语言-进程之间通信

        进程之间的通信,相信对于很多开发人员来说都不陌生,无论是前段开发人员还是服务器开发人员,但是大家接触最多的还是利用Sockt进行进程之间的通信。那么进程之间通信就只有这种方式吗,显示不是,进程之间的通信有多重方式,大家都知道,贝尔实验室和伯克利分校在研究通信技术上对今天的互联网的贡献是巨大的,伯克利分校主要研究的方向是不同电脑之间的进程通信技术,也就是大家现在使用的Socket技术。贝尔实验室研究更多偏向于单计算机不同进程之间的通信技术,也就是大家比较熟悉的,管道技术、信号技术‘信号量技术等等。今天这里不是谈论如何通过编码实现进程的之间的通信,主要是从大的方面来讲讲进程之间通信到底有哪些方式,每一种方式优缺点到底是什么。

进程之间通信方式:

  1. 管道:管道技术是一种比较古老的Unix进程之间通信技术,又可以分为无名管道和有名管道。无名管道只能用于有一定关系的进程之间通信,比如通过fork()创建的子进程之间的通信。有名管道(简称FIFO),则可以实现多不相关进程之间的通信。

  2. 信号:也是Unix下面古老的进程方式,信号可以在任何时候发给某一个进程,例如杀死一个进程,或者是停止一个进程。用户对进程的相应方式可以分为三种:忽略信号,捕捉信号,执行缺省操作。信号的捕捉采用是kill()函数。

  3. 信号量:信号量和信号概念是完全不同的概念,这里需要特别注意,其实现在编程语言中锁机制就是信号量的概念,进程之间的数据同步和是靠信号量为基础的,这个量可以理解为整数,如果信号量大于0则代表当前可以进行进程的通信,如果小于等于0则代表当前不能进行数据通信。数据的同步是通过PV操作实现的。这里只是简单的说明,具体大家可以Google去查找具体的论文。

  4. 内存共享:是一种高效的进程之间的通信方式,很多服务器的设计以内存共享作为一种高效的内存管理模式,其概念就是通过系统API创建一块可以供多个进程通过映射来共同访问这块内存区域。

  5. 消息队列:通常是以消息缓冲区作为中间介质,采取先进先出的机制进行进程之间的通信机制。

  6. Soket机制:严格来说,Socket也是一种进程之间的通信方式,大部分的B/S或者C/S架构软件结构都是采用这种方式进行进程之间的通信。也是大家最不陌生一种进程直接的通信方式。功能非常的强大。

        进程之间通信就先介绍这些,后面如果有时间,分别给大家整理一些相关代码,让大家对照代码来理解相关内容。    



你可能感兴趣的:(c语言-进程之间通信)