IPC 方法分类

进程间通信

shell out

  • 被调用程序在执行完毕之前接管用户的键盘和显示,退出后,调用程序重新控制键盘和显示并继续运行。

  • 专门程序通常有文件系统与父进程进行通信,方法是在指定位置读取或修改文件;

    编辑器或邮件器的shellout就是这样工作的。

管道、重定向和过滤器

管道

  • 单向
  • 通常有两个I/O数据流可用:标准输入和标准输出。

Unix shell 支持重定向操作

ls > foo

ls命令的输出写入到foo文件内。

wc < foo

foo内容作为wc文件的输入。


ps | more

ps输出将被分页,根据显示器尺寸显示。

包装器

包装器常常源于需要制定参数来修改被调用程序的行为。

Bernstein 链

和管道类似,不过每个继发阶段的程序取代了前一阶段的程序,并不是与之并行。

  • 类似于流程图,层层传递的流程。
  • 不能重回上一个流程。

从进程

主从进程通过内部处理状态处理他们之间的协议以避免发生死锁和竞争。

  • 比 shellout 更复杂更难以调试

  • 交互的条件:

    • 两者之间涉及的协议完全无足轻重;
    • 从进程是为应用协议进行通讯而设计的。
    • 允许主进程支持命令行开关或者环境变量的方式来允许调用则设置自己的从进程命令;
    • 一定程度上对从进程进行监控;

    以上这些都将有利于调试,便利于开发。

对等进程间通信

临时文件

缺点:

  • 临时文件被删除前,进程被中断,文件将成为遗留垃圾数据;
  • 如果程序中的多个实例使用同一文件名称作为临时文件名,将导致冲突。
  • 安全性:如果攻击程序知道临时文件要写入的位置,可以覆盖整个文件,可能读取生产者的进程数据,或者通过文件中插入修改,造假数据欺骗消费者进程。

优点:

  • 容易创建
  • 不容易产生死锁和竞争

信号

  • 一个进程向另一个进程发送信号(Unix 的信号是一种软中断形式,每个信号都对接受进程产生默认作用【通常是杀掉这个进程】)

套接字

通过套接字通信的两个程序通常都存在双向字节流。

  • 字节流既是按序的,又是可靠的。
  • 套接字描述符一旦获得,行为基本上和文件描述符一样。

要优雅地使用套接字,在 Unix 传统中,首先得设计这些套接字之间使用的应用协议--即一套请求和相应,能够简洁地表达程序通讯的语义。

实例:PostgreSQL(DB) Freeciv

共享内存

要求生产者和消费者程序必须在同一硬件上。

使用共享内存和信号量功能可避免通过网络栈复制数据的开销。

IPC 方法分类的更多相关文章

  1. LeetCode按照解题方法分类题目

    解题方法分类 1. 滑动窗口. 2. 双指针. 3. 快慢指针. 4. 区间合并. 5. 循环排序. 6. 原地反转链表. 7. 树上的BFS. 8. 树上的DFS. 9. 双堆. 10. 子集. 1 ...

  2. 【C#小知识】C#中一些易混淆概念总结(六)---------解析里氏替换原则,虚方法 分类: C# 2014-02-08 01:53 1826人阅读 评论(0) 收藏

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  3. IIS上虚拟站点的web.config与主站点的web.config冲突解决方法 分类: ASP.NET 2015-06-15 14:07 60人阅读 评论(0) 收藏

    IIS上在主站点下搭建虚拟目录后,子站点中的<system.web>节点与主站点的<system.web>冲突解决方法: 在主站点的<system.web>上一级添 ...

  4. Python的方法分类

    1.Python的类方法,实例方法,和静态方法 class S(object): def Test(self): print("TEST") @classmethod#类方法 de ...

  5. HTTP 错误 500.19- Internal Server Error 错误解决方法 分类: Windows服务器配置 2015-01-08 20:16 131人阅读 评论(0) 收藏

    1.第一种情况如下: 解决方法如下: 经过检查发现是由于先安装Framework组件,后安装iis的缘故,只需重新注册下Framework就可以了,具体步骤如下 1 打开运行,输入cmd进入到命令提示 ...

  6. Python 数据类型,常用函数方法分类

    Python基本数据类型:(int) 字符串(str)列表(list)元组(tuple)字典(dict)布尔(bool) python中可以简单使用 类型(数据)创建或转换数据 例: #字符串转数字 ...

  7. C#退出程序方法分类

    1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出:

  8. WebSphere集群环境修改IHS端口号的方法 分类: WebSphere 2015-08-06 13:41 14人阅读 评论(0) 收藏

    参考资料:http://wenku.baidu.com/link?url=E9BkuEjJ16i9lg7l91L0-xhKCYkHV0mAnlwAeSlDCFM4TjZyk4ZVxmUu64BGd4F ...

  9. Java_方法的定义以及分类

    什么叫方法? 方法也叫做函数,实现某个功能 方法分类: 系统提供的方法: 常用的系统提供的方法:如:nextInt() next() nextDouble() print println()..... ...

随机推荐

  1. 解决java POI导入Excel超时问题

    由于要导入大量数据,后台会耗费很长时间,导致超时. 本项目前端request.js中设定的超时时间为150s. const service = axios.create({ baseURL: base ...

  2. nacos配置中心之服务器端

    配置信息的发布 配置信息发布请求URL: POST: /v1/cs/configs nacos在STANDALONE模式或集群模式没有指定用mysql情况下使用derby数据库,在集群模式且指定mys ...

  3. 使用CSS计数器美化数字有序列表

    在web设计中,使用一种井井有条的方法来展示数据是十分重要的,这样用户就可以很清晰的理解网站所展示的数据结构和内容,使用有序列表就是实现数据有组织的展示的一种简单方法. 如果你需要更加深入地控制有序列 ...

  4. 【转载】Java虚拟机类加载机制与案例分析

    出处:https://blog.csdn.net/u013256816/article/details/50829596 https://blog.csdn.net/u013256816/articl ...

  5. 因MemoryCache闹了个笑话

    前言 是这么一回事: 我正在苦思一个业务逻辑,捋着我还剩不多的秀发,一时陷入冥想中...... 突然聊天图标一顿猛闪,打开一看,有同事语音: 大概意思是:同事把项目中Redis部分缓存换成Memory ...

  6. Elasticsearch 模块 - Shard Allocation 机制

    原文 1. 背景 shard allocation 意思是分片分配, 是一个将分片分配到节点的过程; 可能发生该操作的过程包括: 初始恢复(initial recovery) 副本分配(replica ...

  7. 14. vue源码入口+项目结构分析

    一. vue源码 我们安装好vue以后, 如何了解vue的的代码结构, 从哪里下手呢? 1.1. vue源码入口 vue的入口是package.json 来分别看看是什么含义 dependences: ...

  8. 【python+selenium的web自动化】- 控制浏览器的常用操作

    如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html 前言 ​ 本文主要介绍se ...

  9. HDU_3359 Kind of a Blur 【浮点型高斯消元+BFS】

    一.题目 Kind of a Blur 二.分析 题目读起来挺费劲的. 主要就是要求一个矩阵,其中每个点及其于这个的曼哈顿距离小于D的点的值总和的平均值就是新生成的矩阵. 给定新生成的矩阵,求初始矩阵 ...

  10. kettle 执行 kjb 临时文件夹 /tmp permission denied 问题

    编写完的 kettle job (kjb文件) 放在服务器上执行的时候出现了奇怪的错误: # 执行 kjb ./kitchen.sh -file:/opt/code/ods/ods_inc.kjb # ...