进程间通讯(IPC)方法主要有以下几种:

管道/FIFO/共享内存/消息队列/信号

1.管道中还有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用于父子进程通讯,命名管道可用于非父子进程,命名管道就是FIFO,管道是先进先出的通讯方式

2.消息队列是用于两个进程之间的通讯,首先在一个进程中创建一个消息队列,然后再往消息队列中写数据,而另一个进程则从那个消息队列中取数据。需要注意的是,消息队列是用创建文件的方式建立的,如果一个进程向某个消息队列中写入了数据之后,另一个进程并没有取出数据,即使向消息队列中写数据的进程已经结束,保存在消息队列中的数据并没有消失,也就是说下次再从这个消息队列读数据的时候,就是上次的数据!!!!

3.信号量,它与WINDOWS下的信号量是一样的,所以就不用多说了

4.共享内存,类似于WINDOWS下的DLL中的共享变量,但LINUX下的共享内存区不需要像DLL这样的东西,只要首先创建一个共享内存区,其它进程按照一定的步骤就能访问到这个共享内存区中的数据,当然可读可写

以上几种方式的比较:

1.管道:速度慢,容量有限,只有父子进程能通讯

2.FIFO:任何进程间都能通讯,但速度慢

3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题

4.信号量:不能传递复杂消息,只能用来同步

5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存

Linux进程间同步和通信,linux进程间的同步方法相关推荐

  1. 线程间同步和通信,event semaphore mailbox

    线程间同步和通信,event semaphore mailbox 1. 概述 2. 事件event 3. wait_order() 4. 旗语(semaphore) 5. semaphore::get ...

  2. linux进程管理 实现管道通信,Linux进程管理(二)管道通信 · lww’s Blog

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 实验内容试验阻塞型读写过程中的各种情况 试验阻塞型读写过程中的各种情况 利用Posix信号量机制实现进程间对管道的互斥访 ...

  3. linux几秒钟同步一次,Linux时间同步配置方法

    由于是在做mongoDB的实验中再一次的遇到了mongos路由节点同步时由于ntp时间的问题导致同步非常的慢.故写了个时间同步的语句===> while :; do rdate -s 192.1 ...

  4. 【VxWorks系列】任务间同步与通信之共享内存

    在开始之前先说明三个概念,任务间的同步,互斥,通信. 同步,是指一个任务等待某个条件发生,而另外一个任务引发这个条件后,等待的任务会被触发执行相应的处理.这就是一个任务与另一任务之间的同步控制. 互斥 ...

  5. linux系统怎么同步时间不对,linux系统同步系统时间

    业务场景 由于开发用的laravel框架,业务中用了很多job定时任务,时间几乎分布在全天的任何时间点(精确到秒),如果服务器时间校准出现时间跳跃的话,很有可能导致某些计划任务无法执行. 实现方法分析 ...

  6. linux硬链接同步文件夹,linux中的硬链接和软链接

    一.ln命令概述 它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上 ...

  7. FreeRTOS 任务间同步和通信方法

    以下在CMSIS V2代码下实现,不区分是否中断安全. 1.信号量 semaphores /* Definitions for adcFinishedBinSem */ osSemaphoreId_t ...

  8. Linux内核态之间进程通信,Linux 系统内核空间与用户空间通信的实现与分析[转载]...

    [https://www.ibm.com/developerworks/cn/linux/l-netlink/index.html] 多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 ...

  9. android p获取通话记录_Android 底层的进程间同步机制

    作者:Android面试官 进程间通信的经典实现 进程间通信(Inter-process communication,IPC)指运行在不同进程中的若干线程间的数据交换,可发生在一台机器上,也可通过网络 ...

最新文章

  1. shell脚本中的变量
  2. [蓝桥] 算法提高 队列操作
  3. SAP ABAP如何隐藏你写的程序代码
  4. cuda二维数组内存分配和数据拷贝
  5. HDU1403(后缀数组--最长公共子串)
  6. Android SQLiteDatabase分析
  7. 【炼丹技巧】指数移动平均(EMA)【在一定程度上提高最终模型在测试数据上的表现(例如accuracy、FID、泛化能力...)】
  8. boost asio io_service与 strand 分析
  9. python 黑客工具开发_python黑客软件的搜索结果-阿里云开发者社区
  10. 自定义“TB_定位访问”子类
  11. 2022-2028年中国差旅管理行业市场行情动态及投资潜力研究报告
  12. FileUpload上传过大文件异常
  13. PalmOS开发教程
  14. linux qemu的使用教程,详解QEMU网络配置的方法
  15. 昨天买的电动车今天上牌了
  16. Bundle-Adjustment并行求解器
  17. linux多拨脚本,openwrt-mwan3负载均衡,多线多拨
  18. JavaScript replace() 方法转换时间数据中的“-”和“/”
  19. 设备通过国标GB28181/海康Ehome接入EasyCVR,视频无法打开的原因分析及解决方法
  20. python+django线上教学平台vue教育系统

热门文章

  1. aws cli 使用_学习AWS CLI –使用AWS CLI探索IAM用户,角色,策略
  2. ssis导出数据性能_如何使用SSIS将数据从Excel导出到Azure SQL数据库中的多个表
  3. python 空值(NoneType)
  4. TCP/IP学习笔记(3)----IP,ARP,RARP协议
  5. iOS6、7、8、9新特性汇总和适配说明
  6. .NET开源OpenID和OAuth解决方案Thinktecture IdentityServer
  7. 细说 Form (表单)(转)
  8. Linux下10 个最酷的 Linux 单行命令(转载)
  9. 报表FineReport部署Tomcat服务器
  10. springmvc5中设计模式