看图理解进程间通信IPC

什么是进程间通讯

进程间通信(inter-process communication或interprocess communication,简写IPC)是指两个或两个以上进程(或线程)之间进行数据或信号交互的技术方案。

通常,IPC一般包含客户端和服务器,客户端请求数据,服务器响应请求(比如分布式计算中就是这样)。

有哪些IPC方法

IPC方法适用的环境

文件(File)

存储在磁盘上的记录,或由文件服务器按需合成的记录,可以由多个进程访问。

信号(Signal)

系统消息从一个进程发送到另一个进程,一般不用于传输数据,而是用于远程传输命令。

套接字(Socket)

通过网络接口将数据量发送到本机的不同进程或远程计算机。

Unix域套接字(Unix domain socket)

用于在同一台机器上运行的进程之间的通信。虽然因特网域套接字可用于同一目的,但UNIX域套接字的效率更高。UNIX域套接字仅仅复制数据;它们并不执行协议处理,不需要添加或删除网络报头,无需计算检验和,不要产生顺序号,无需发送确认报文。

消息队列(Message queue)

类似于套接字的数据流,但消息有自己的结构,它允许多个进程只需要读写消息队列,而不需要直接相互连接。

管道(Pipe)

管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

命名管道(Named pipe或FIFO)

命名管道可在同一台计算机的不同进程之间或在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信。

共享内存(Shared memory)

允许多个进程访问同一个内存块,该内存块作为一个共享缓冲区,供进程间相互通信。

消息传递(Message passing)

一般在并发模型中,允许多个程序使用消息队列或者托管通道通信。

内存映射文件(Memory-mapped file)

类似于标准的文件,内存映射文件映射到RAM,可以直接对内存地址进行更改,而不是更改输出流。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

我是如何统治内网的

工具:bettercap、metasploit、dnsspoof、armitage

1581
来自专栏python开发者

Ubuntu部署python3.5的开发和运行环境

Ubuntu部署python3.5的开发和运行环境 1 概述 由于最近项目全部由python2.x转向 python3.x(使用目前最新的 python3.5....

28010
来自专栏程序员叨叨叨

听说你PHP配置Composer遇到了一些困境

最近在写PHP通信接口,涉及到数据库CRUD操作时,觉得PHP原生方法每次都要写SQL语句,效率不高,于是尝试使用Propel orm框架,此文记录PHP配置P...

903
来自专栏猿人谷

mac下使用github

      提起github相信大家都不会陌生,在这里就不再赘述了。作为开源代码库以及版本控制系统,使用好了确实会非常受益,再说的势利点,你找工作时给面试官说你...

2065
来自专栏云计算教程系列

如何在Ubuntu 14.04上备份OrientDB数据库

OrientDB是一个多模型NoSQL数据库,支持图形和文档数据库。它是一个Java应用程序,可以在任何操作系统上运行; 它也完全是ACID投诉,支持多主复制。

830
来自专栏Brian

Install Django Nginx uWSGI

概述 最近项目需要安装和配置多站点环境,所以把多站点开发环境配置和安装记录下来,帮助其他人少走坑。 安装Python 2.7.x 首先安装一些开发环境基本的包和...

3999
来自专栏KK的小酒馆

用aliyun的Maven仓库下载Android Studio内依赖包

从GitHub导入新项目时,总是在gradle运行中卡壳,各种依赖包无法从jcenter或者Maven仓库下载下来,公司网也差……一上午就这么废了。 如果你也...

1192
来自专栏我的博客

Windowsserver2003下搭建IIS+PHP+MySQL+PHPmyadmin

安装IIS在这里不在赘述,重点配置iis解析php和phpmyadmin的配置 去这里http://www.php.net/下载php,我下载的是php-5.2...

3706
来自专栏散尽浮华

Linux操作系统启动流程梳理

接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程: 一般来说,所有的操作系统的启动流程基本就是: ? 总的...

2868
来自专栏WindCoder

边学边用Gradle:依赖管理

粗略的讲, 依赖管理由两部分组成:项目的 dependencies(依赖项) 和 publications(发布项)。

1841

扫码关注云+社区

领取腾讯云代金券