linux进程间通信(IPC)有几种方式,下面将将简单的简述一下:

一。管道(pipe)

管道是Linux支持的最初IPC方式,管道可分为无名管道,有名管道等。

(一)无名管道,它具有几个特点:

1) 管道是半双工的,只能支持数据的单向流动;两进程间需要通信时需要建立起两个管道;

2) 无名管道使用pipe()函数创建,只能用于父子进程或者兄弟进程之间;

3) 管道对于通信的两端进程而言,实质上是一种独立的文件,只存在于内存中;

4) 数据的读写操作:一个进程向管道中写数据,所写的数据添加在管道缓冲区的尾部;另一个进程在管道中缓冲区的头部读数据。

(二)有名管道

有名管道也是半双工的,不过它允许没有亲缘关系的进程间进行通信。具体点说就是,有名管道提供了一个路径名与之进行关联,以FIFO(先进先出)的形式存在于文件系统中。这样即使是不相干的进程也可以通过FIFO相互通信,只要他们能访问已经提供的路径。

值得注意的是,只有在管道有读端时,往管道中写数据才有意义。否则,向管道写数据的进程会接收到内核发出来的SIGPIPE信号;应用程序可以自定义该信号处理函数,或者直接忽略该信号。

二。信号量(semophore)

信号量是一种计数器,可以控制进程间多个线程或者多个进程对资源的同步访问,它常实现为一种锁机制。实质上,信号量是一个被保护的变量,并且只能通过初始化和两个标准的原子操作(P/V)来访问。(P,V操作也常称为wait(s),signal(s))

三。信号(Signal)

信号是Unix系统中使用的最古老的进程间通信的方法之一。操作系统通过信号来通知某一进程发生了某一种预定好的事件;接收到信号的进程可以选择不同的方式处理该信号,一是可以采用默认处理机制-进程中断或退出,一是忽略该信号,还有就是自定义该信号的处理函数,执行相应的动作。

内核为进程生产信号,来响应不同的事件,这些事件就是信号源。信号源可以是:异常,其他进程,终端的中断(Ctrl-C,Ctrl+\等),作业的控制(前台,后台进程的管理等),分配额问题(cpu超时或文件过大等),内核通知(例如I/O就绪等),报警(计时器)。

四。消息队列(Message Queue)

消息队列就是消息的一个链表,它允许一个或者多个进程向它写消息,一个或多个进程向它读消息。Linux维护了一个消息队列向量表:msgque,来表示系统中所有的消息队列。

消息队列克服了信号传递信息少,管道只能支持无格式字节流和缓冲区受限的缺点。

五。共享内存(shared memory)

共享内存映射为一段可以被其他进程访问的内存。该共享内存由一个进程所创建,然后其他进程可以挂载到该共享内存中。共享内存是最快的IPC机制,但由于linux本身不能实现对其同步控制,需要用户程序进行并发访问控制,因此它一般结合了其他通信机制实现了进程间的通信,例如信号量。

五。套接字(socket)

socket也是一种进程间的通信机制,不过它与其他通信方式主要的区别是:它可以实现不同主机间的进程通信。一个套接口可以看做是进程间通信的端点(endpoint),每个套接口的名字是唯一的;其他进程可以访问,连接和进行数据通信。

linux常见的ipc,IPC(进程间通信)几种常用的方法相关推荐

  1. R中两种常用并行方法——2. snowfall

    上一篇博客(R中两种常用并行方法--1. parallel)中已经介绍了R中常见的一种并行包:parallel,其有着简单便捷等优势,其实缺点也是非常明显,就是很不稳定.很多时候我们将大量的计算任务挂 ...

  2. 基于 Python 的 8 种常用抽样方法

    抽样是统计学.机器学习中非常重要,也是经常用到的方法,因为大多时候使用全量数据是不现实的,或者根本无法取到.所以我们需要抽样,比如在推断性统计中,我们会经常通过采样的样本数据来推断估计总体的样本. 上 ...

  3. 数字图像处理——12种常用图像处理方法对比

    数字图像处理--12种常用图像处理方法对比 1.图像反转 2.对数变换 3.幂次变换 4.分段函数 5.直方图均衡化 6.直方图规定化 7.直方图匹配 8.线性滤波 9.中值滤波与均值滤波 10.拉普 ...

  4. 微信分销商城小程序几种常用开发方法

    一.微信分销商城小程序几种常用开发方法 1.自主开发 这种方式是很多企业考虑的,但这种开发方式的前提是有自己的开发团队或重新组建开发团队.无论是重组自己的开发团队还是有自己开发团队,功能要求.前后端开 ...

  5. Linux 常见的六大 IPC 通信方式

    Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间.任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区, ...

  6. webp格式怎么转换成jpg,3种常用工具方法

    在日常办公中,我们经常需要在网上找到一些图片进行编辑.但有时候我们会遇到Webp格式的图片,而有些软件无法直接编辑它们.Webp是一种由谷歌开发的图像文件格式,它提供了有损压缩和无损压缩(可逆压缩)的 ...

  7. 详解3种常用数据分析方法,满足你职场95%的高频需求

    最近有一位刚入行的朋友跟我吐槽,说他提交了一份8月的经营数据分析报告给领导,报告里面放了很多图表,也罗列了很多数据,结果却被老板痛批了一顿,说分析了半天也看不懂他的分析逻辑在哪里,他觉得很委屈. 其实 ...

  8. 数据归一化及两种常用归一化方法

    数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可 ...

  9. 相关分析-5种常用相关分析方法

    http://sanwen8.cn/p/2c62mIw.html 相关分析(Analysis of Correlation)是网站分析中经常使用的分析方法之一.通过对不同特征或数据间的关系进行分析,发 ...

最新文章

  1. Dubbo+zookeeper使用方法以及注意事项
  2. [国家集训队]墨墨的等式
  3. 公司前台打印机的连接方法(超级简单)
  4. 获取/设置IFRAME内对象元素的几种JS方法
  5. java数组显示最大值,java 如何用方法在数组中找到最大值并显示他的名称?
  6. updatePanle总结
  7. mysql查询到最新记录就停止_使用Limit参数优化MySQL查询 在找到一个记录后将停止查询...
  8. linux下sock_raw和sock_stream读取缓存的区别
  9. python 爬取上海体育彩票文章标题、时间、内容
  10. git解决error: failed to push some refs to ‘xxx(远程库)‘
  11. mysql事务prepare_mysql之 事务prepare 与 commit 阶段分析
  12. 【something】简单的平均脸制作
  13. 视频I帧、P帧、B帧总结
  14. Difference between Triplets POJ - 3244
  15. iOS NSFileManager文件管理(沙盒)
  16. 猫眼 — 破解数字反爬获取实时票房
  17. Win11怎么设置共享文件夹?Win11共享文件夹设置方法
  18. WINDOS服务器安全设置
  19. 怎么写好一份数据分析报告
  20. 最近点对问题(蛮力法和分治法)

热门文章

  1. [转] 高性能嵌入式处理器时代来临!多家中国芯片设计公司选择ARM® Cortex™-A9和Mali™图形处理器技术
  2. 各种多媒体软件功能总结
  3. Hexo博客SEO优化
  4. 亚马逊推中文Kindle书店
  5. 国内十大免费网络相册
  6. 02 【ArcGIS JS API + eCharts系列】实现二、三维迁徙图的绘制
  7. CenterNet2
  8. 毫米波雷达识别问题分析及解决措施
  9. linux合成软件下载,Yoshimi下载 软件合成器Yoshimi for Linux v2.0 官方免费版 下载-脚本之家...
  10. RDD断点回归-handbook