Linux进程间同步和通信,linux进程间的同步方法
进程间通讯(IPC)方法主要有以下几种:
管道/FIFO/共享内存/消息队列/信号
1.管道中还有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用于父子进程通讯,命名管道可用于非父子进程,命名管道就是FIFO,管道是先进先出的通讯方式
2.消息队列是用于两个进程之间的通讯,首先在一个进程中创建一个消息队列,然后再往消息队列中写数据,而另一个进程则从那个消息队列中取数据。需要注意的是,消息队列是用创建文件的方式建立的,如果一个进程向某个消息队列中写入了数据之后,另一个进程并没有取出数据,即使向消息队列中写数据的进程已经结束,保存在消息队列中的数据并没有消失,也就是说下次再从这个消息队列读数据的时候,就是上次的数据!!!!
3.信号量,它与WINDOWS下的信号量是一样的,所以就不用多说了
4.共享内存,类似于WINDOWS下的DLL中的共享变量,但LINUX下的共享内存区不需要像DLL这样的东西,只要首先创建一个共享内存区,其它进程按照一定的步骤就能访问到这个共享内存区中的数据,当然可读可写
以上几种方式的比较:
1.管道:速度慢,容量有限,只有父子进程能通讯
2.FIFO:任何进程间都能通讯,但速度慢
3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题
4.信号量:不能传递复杂消息,只能用来同步
5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存
Linux进程间同步和通信,linux进程间的同步方法相关推荐
- 线程间同步和通信,event semaphore mailbox
线程间同步和通信,event semaphore mailbox 1. 概述 2. 事件event 3. wait_order() 4. 旗语(semaphore) 5. semaphore::get ...
- linux进程管理 实现管道通信,Linux进程管理(二)管道通信 · lww’s Blog
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 实验内容试验阻塞型读写过程中的各种情况 试验阻塞型读写过程中的各种情况 利用Posix信号量机制实现进程间对管道的互斥访 ...
- linux几秒钟同步一次,Linux时间同步配置方法
由于是在做mongoDB的实验中再一次的遇到了mongos路由节点同步时由于ntp时间的问题导致同步非常的慢.故写了个时间同步的语句===> while :; do rdate -s 192.1 ...
- 【VxWorks系列】任务间同步与通信之共享内存
在开始之前先说明三个概念,任务间的同步,互斥,通信. 同步,是指一个任务等待某个条件发生,而另外一个任务引发这个条件后,等待的任务会被触发执行相应的处理.这就是一个任务与另一任务之间的同步控制. 互斥 ...
- linux系统怎么同步时间不对,linux系统同步系统时间
业务场景 由于开发用的laravel框架,业务中用了很多job定时任务,时间几乎分布在全天的任何时间点(精确到秒),如果服务器时间校准出现时间跳跃的话,很有可能导致某些计划任务无法执行. 实现方法分析 ...
- linux硬链接同步文件夹,linux中的硬链接和软链接
一.ln命令概述 它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上 ...
- FreeRTOS 任务间同步和通信方法
以下在CMSIS V2代码下实现,不区分是否中断安全. 1.信号量 semaphores /* Definitions for adcFinishedBinSem */ osSemaphoreId_t ...
- Linux内核态之间进程通信,Linux 系统内核空间与用户空间通信的实现与分析[转载]...
[https://www.ibm.com/developerworks/cn/linux/l-netlink/index.html] 多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 ...
- android p获取通话记录_Android 底层的进程间同步机制
作者:Android面试官 进程间通信的经典实现 进程间通信(Inter-process communication,IPC)指运行在不同进程中的若干线程间的数据交换,可发生在一台机器上,也可通过网络 ...
最新文章
- shell脚本中的变量
- [蓝桥] 算法提高 队列操作
- SAP ABAP如何隐藏你写的程序代码
- cuda二维数组内存分配和数据拷贝
- HDU1403(后缀数组--最长公共子串)
- Android SQLiteDatabase分析
- 【炼丹技巧】指数移动平均(EMA)【在一定程度上提高最终模型在测试数据上的表现(例如accuracy、FID、泛化能力...)】
- boost asio io_service与 strand 分析
- python 黑客工具开发_python黑客软件的搜索结果-阿里云开发者社区
- 自定义“TB_定位访问”子类
- 2022-2028年中国差旅管理行业市场行情动态及投资潜力研究报告
- FileUpload上传过大文件异常
- PalmOS开发教程
- linux qemu的使用教程,详解QEMU网络配置的方法
- 昨天买的电动车今天上牌了
- Bundle-Adjustment并行求解器
- linux多拨脚本,openwrt-mwan3负载均衡,多线多拨
- JavaScript replace() 方法转换时间数据中的“-”和“/”
- 设备通过国标GB28181/海康Ehome接入EasyCVR,视频无法打开的原因分析及解决方法
- python+django线上教学平台vue教育系统
热门文章
- aws cli 使用_学习AWS CLI –使用AWS CLI探索IAM用户,角色,策略
- ssis导出数据性能_如何使用SSIS将数据从Excel导出到Azure SQL数据库中的多个表
- python 空值(NoneType)
- TCP/IP学习笔记(3)----IP,ARP,RARP协议
- iOS6、7、8、9新特性汇总和适配说明
- .NET开源OpenID和OAuth解决方案Thinktecture IdentityServer
- 细说 Form (表单)(转)
- Linux下10 个最酷的 Linux 单行命令(转载)
- 报表FineReport部署Tomcat服务器
- springmvc5中设计模式