最初Unix IPC包括:管道、FIFO、信号;

System V IPC包括:System V消息队列、System V信号灯、System V共享内存区;

Posix IPC包括: Posix消息队列、Posix信号灯、Posix共享内存区。由于Unix版本的多样性,电子电气工程协会(IEEE)开发了一个独立的Unix标准,这个新的ANSI Unix标准被称为计算机环境的可移植性操作系统界面(PSOIX)。现有大部分Unix和流行版本都是遵循POSIX标准的,而Linux从一开始就遵循POSIX标准;

Linux下进程间通信的几种主要手段:

  1. 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;                                                                                       缺点:只能承载无格式字节流;缓冲区大小受限等
  2. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);  缺点:信号承载信息量少
  3. 报文(Message)队列(消息队列):消息队列是消息的链接表,包括Posix消息队列和system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  4. 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
  5. 信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
  6. 套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

一般来说,linux下的进程包含以下几个关键要素

  • 有一段可执行程序;
  • 有专用的系统堆栈空间;
  • 内核中有它的控制块(进程控制块),描述进程所占用的资源,这样,进程才能接受内核的调度;
  • 具有独立的存储空间

进程和线程有时候并不完全区分,而往往根据上下文理解其含义。

Linux进程间通讯相关推荐

  1. Linux 进程间通讯(IPC)方式 ------- 共享内存

    Linux 进程间通讯(IPC)方式有以下几种: 1->管道(pipe)和有名管道(fifo). 2->消息队列 3->共享内存 4->信号量 5->信号(signal) ...

  2. Linux 进程间通讯方式 pipe()函数

    Linux 进程间通讯方式有以下几种: 1->管道(pipe)和有名管道(fifo). 2->消息队列 3->共享内存 4->信号量 5->信号(signal) 6-&g ...

  3. linux无名管道实验代码,Linux 进程间通讯之创建无名管道和读写无名管道

    Linux进程间通讯的方式: 1. 管道(pipe)和有名管道(FIFO). 2. 信号(signal) 3. 消息队列 4. 共享内存 5. 信号量 6. 套接字(socket) 管道通讯: 无名管 ...

  4. linux命名管道进程间通信,Linux进程间通讯--命名管道

    IPC安全 前面总结了匿名管道,如今来看命名管道:因为匿名管道的一个限制就是:只能是有血缘关系的进程间才能够通讯,好比:有两个同祖先的子进程,父子进程等:为了突破这一个限制,想让没有任何关系的两个进程 ...

  5. linux进程间通讯的几种方式的特点和优缺点,和适用场合。

    http://blog.csdn.net/kakaka2011/article/details/6636661 1. 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有 ...

  6. Linux 进程间通讯详解一

    进程间的通讯 两台主机间的进程通讯 --socket一台主机间的进程通讯 --管道(匿名管道,有名管道) --System V进程间通信(IPC)包括System V消息队列,System V信号量, ...

  7. linux进程间通讯-信号

    文章目录 进程间通信功能 信号 信号的概念 产生信号的方式 信号的默认(缺省)处理方式 进程接收到信号后的处理方式 kill函数 alarm函数 raise函数 abort函数 pause函数 sig ...

  8. linux进程间通讯-有名管道

    文章目录 阻塞和非阻塞概念 通过fcntl函数设置文件的阻塞特性 文件描述符概述 文件描述符的复制 有名管道 有名管道的创建 有名管道的基本读写操作 有名管道实现进程间通信 有名管道的读写规律(阻塞) ...

  9. Linux进程间通讯之消息队列

    首先有个大体的概念:http://www.xefan.com/archives/83703.html 头文件: #include <sys/ipc.h> #include <sys/ ...

最新文章

  1. nslookup type值_nslookup命令详解【转】
  2. linux查看python环境变量_Linux中的Python环境变量
  3. UEditor在线编辑器使用记录
  4. lpc2000 filash utility 程序烧写工具_单片机烧录程序的次数
  5. SEO 搜索引擎优化
  6. Python笔记-weditor的安装及基本使用
  7. Gartner最新数据报告 WP系统仅剩1%
  8. wincc怎么做一个弹出画面_wincc怎样弹出确认窗口?
  9. UC、火绒联合发布专杀工具 清除 2345 锁首木马
  10. easyUI之新增,下架以及上架
  11. 砌体的弹性模量计算_砌体弹性模量等参数的取值.doc
  12. 跨终端实践-天猫试戴的解决方案
  13. 压力大对身体有没有伤害,你觉的有伤害就有伤害,你觉的没伤害就没伤害
  14. #论文学习#第二篇:CNN-SLAM: Real-time dense monocular SLAM with learned depth prediction
  15. jzoj 4813. 【NOIP2016提高A组五校联考2】running
  16. 饥荒服务器物品指令,流年饥荒控制台指令全+物品大全+服务器管理命令大全.docx...
  17. ES-JOB——分布式定时任务高级使用——控制台修改任务
  18. 【庖丁解牛】成功解决nginx报错:bind() to 0.0.0.0:8090 failed (13: Permission denied)
  19. 小眼睛适合大框还是小框眼镜_小眼睛合适什么眼镜框 这个禁忌千万不要犯
  20. 创业初始,王兴每周工作超过100小时,互联网巨头各有各的辛酸

热门文章

  1. Android 面试 - 动画
  2. 魔术方法php,PHP中常用的魔术方法
  3. 浅析网络流量分析原理:如何把二进制“天书”变成“人话”
  4. 你以为ACI=SDN?大错特错!
  5. 数据中心机房环境温度与微模块机柜有什么关系?
  6. 数据中心采用液体冷却的障碍
  7. 数据中心的变化需要更多有效冷却方式
  8. ftp服务器网页空白,ftp服务器网页空白
  9. 成功解决raise XGBoostError(_LIB.XGBGetLastError()) xgboost.core.XGBoostError: b'[22:08:00] C:\\Users\\Ad
  10. Interview:算法岗位面试—11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录